Я получаю данные от Kafka в приложении Spark Streaming. Он поставляется в формате Transformed DStreams. Затем я сохраняю только те функции, которые мне нужны.
features=data.map(featurize)
, который дает мне «имя», «возраст», «независимо».
Затем я хочу сохранить только имя всех данных
features=data.map(featurize).map(lambda Names: Names["name"]
Работа над отдельными элементами RDD-pyspark
Теперь, когда я напечатать эту команду, я получаю все имена, приходящие от потокового приложения, но я хочу работать на каждом из них в отдельности.
В частности, я хочу проверить каждое имя, и если я уже сталкивался с ним в прошлом, я хочу применить к нему функцию. В противном случае я просто продолжу свое приложение. Поэтому я хочу, чтобы каждое имя было строкой, чтобы я мог вставить ее в свою функцию, которая проверяет, была ли в прошлом показана одна строка.
Я знаю, что foreach
предоставит мне каждый RDD, но все же я хочу работать над каждым именем RDD отдельно.
Есть ли способ в pyspark сделать это?
Вы пробовали updateStateByKey, где ключи - ваши имена? – user3689574
Как я могу использовать updateStateByKey для хранения имен из разных потоковых окон? – Iolkos
Здесь вы можете найти полезную информацию (найдите раздел updateStateByKey): http://spark.apache.org/docs/latest/streaming-programming-guide.html – user3689574