python - spark RDD中是否有类似sql中的'like'函数的功能?
问题描述
我正在寻找像sql中的RDD操作。like
假设我有一个具有不同 IP 的列,例如:
192.168.1.1/
192.168.1.2/
192.168.1.3/
123.123.123.123/
1.1.1.1/
2.2.2.2/
假设它们在不同类型的RDD和DataFrame中,这样我们就可以直接对它们进行一些操作。在RDD中是否有类似以下 sql的操作具有相同的结果?
'SELECT count(host) from webIP where host like '192.168.1.%'.
我知道如何使用reduceByKey
函数来计数Lines.reduceByKey(lambda x, y: x+y)
,我正在寻找的是类似like
in sql 的函数,用于找出RDD数据中以 192.168.1.* 开头的 IP。
解决方案
使用 RDD:
rdd = sc.parallelize(['192.168.1.1',
'192.168.1.2',
'192.168.1.3',
'123.123.123.123',
'1.1.1.1 2.2.2.2'])
要计算以您开头的元素,192.168.1.
您可以执行以下操作:
>>> rdd.filter(lambda x: x.startswith('192.168.1.')).count()
3
当心那filter()
是一个转变,count()
而是一个动作
使用数据框:
你可以直接用sql过滤:>>> the_dataframe.filter('webIP LIKE "192.168.1.%"').count()
假设目标列是'webIP'
推荐阅读
- javascript - javascript - 从光标后的一点开始画一条线
- reactjs - React 服务器渲染应用程序中 ComponentDidMount 的替代方案是什么?
- vba - VBA CountIF 不会计算整个列
- sql - 如何从喜欢的地方选择特殊字符 - SQL Server
- tsql - 当日期以朱利安格式存储为 int 时,获取最近 5 天的数据
- javascript - javascript将数字四舍五入到小数点后两位
- go - 使用 golang dep 来自同一 github 源的不同包版本
- wordpress - 使用 URL 搜索附件 ID(区分大小写)
- python - 图像分割后如何校正边界
- c++ - QHeaderview 中的排序指示器是什么?