Есть ли подобная функция в spark RDD, как функция like в sql? - PullRequest
0 голосов
/ 12 февраля 2019

Я ищу СДР операцию, такую ​​как like в sql.Скажем, у меня есть столбец с разными 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), чтоЯ ищу похожую функцию, такую ​​как like в sql, чтобы узнать IP-адреса, начинающиеся с 192.168.1. * В RDD data.

1 Ответ

0 голосов
/ 12 февраля 2019

С СДР:

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'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...