【问题标题】:Is there any similar function in spark RDD like the 'like' function in sql?spark RDD中是否有类似sql中的'like'函数的功能?
【发布时间】:2019-02-12 00:35:13
【问题描述】:

我正在寻找 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/

假设它们在不同的类型RDDDataFrame中,这样我们就可以直接对它们进行一些操作。 RDD 中是否有类似以下 sql 的操作具有相同的结果?

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

我知道如何使用reduceByKey函数来计数例如Lines.reduceByKey(lambda x, y: x+y),我正在寻找类似sql中的like的函数来找出以192.168.1开头的IP。*在 RDD 数据中。

【问题讨论】:

    标签: python apache-spark


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-26
      • 1970-01-01
      • 1970-01-01
      • 2012-08-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      相关资源
      最近更新 更多