我正在寻找类似like
的 RDD 操作。假设我有一列具有不同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)
,我正在寻找的是类似的函数,例如sql中的like
来查找启动的IP。在 RDD 数据中为192.168.1。*。
答案 0 :(得分:2)
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()
是一个动作
>>> the_dataframe.filter('webIP LIKE "192.168.1.%"').count()
假设目标列为'webIP'