簡體   English   中英

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

[英]Is there any similar function in spark RDD like the 'like' function in sql?

我正在尋找like在sql中一樣的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/

假設它們處於不同的RDDDataFrame類型,以便我們可以直接對它們進行一些操作。 RDD中是否有與以下sql相同的結果?

'SELECT count(host)  from webIP  where host like '192.168.1.%'.

我知道如何使用reduceByKey函數來計算,如Lines.reduceByKey(lambda x, y: x+y)我所尋找的是一個類似的功能,如like在SQL中發現,以192.168開始的IP地址。 1. *在RDD數據中。

使用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.開頭的元素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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM