Используя .filter и .collect на небольшой практике RDD, чтобы напечатать все слова, начинающиеся с » h » (начинающий pyspark)

#python #pyspark #lambda #jupyter-notebook #rdd

Вопрос:

Я только начинаю учиться использовать pyspark в Jupyternotebook и начинающем программисте.

Чтобы проверить воду, я создал этот массив: word = [«привет», «как», «ты», «ты»]

Тогда этот RDD: wordRDD = spark.SparkContext.распараллелить([слово])

Я сейчас пытаюсь использовать .отфильтруйте и .соберите на wordRDD, чтобы напечатать все слова, начинающиеся с «h», но просто не можете найти решение. У кого-нибудь есть какие-нибудь идеи?

Это все, что у меня есть:

 word = ['hey', 'how', 'are', 'you']
wordRDD = spark.sparkContext.parallelize([word])

print(wordRDD.filter.map(lambda x=x: x in wordRDD if x[0] == "h").collect())
 

Ответ №1:

Вы почти на месте, вызов функции-RDD.filter:

 words = ['hey', 'how', 'are', 'you']
wordRDD = spark.sparkContext.parallelize(words)

filterRDD = wordRDD.filter(lambda word: word.startswith("h"))
print(filterRDD.collect())
 

Комментарии:

1. Большое вам спасибо за вашу помощь, Кафельс!!

2. Я получаю это в качестве ответа: объект списка не имеет атрибута «startswith» — должен ли я преобразовать его в строку?

3. Это зависит от того, ваш RDD должен быть списком списков или списком строк?

4. это список строк

5. Я обновил свой ответ, вы должны удалить эти скобки spark.sparkContext.parallelize([words])