#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])