Spark RDD中是否有类似sql中的“ like”功能的类似功能?

时间:2019-02-12 00:35:13

标签: python apache-spark

我正在寻找类似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。*。

1 个答案:

答案 0 :(得分:2)

使用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'