spark RDD中是否有类似于sql中的like函数的函数?

2024-04-20 10:03:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在寻找一个RDD操作,比如sql中的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),我要找的是一个类似于sql中的like的函数来找出RDD数据中以192.168.1.*开头的ip。你知道吗


Tags: 函数fromiphost类型dataframesqlcount
1条回答
网友
1楼 · 发布于 2024-04-20 10:03:07

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

相关问题 更多 >