Итерирование фрейма данных Spark с таблицами Hive - PullRequest
0 голосов
/ 30 мая 2018

У меня очень большой CSV-файл, поэтому я использовал spark и загрузил его в фрейм данных spark.
Мне нужно извлечь широту и долготу из каждой строки в CSV, чтобы создать карту фолиума.
с пандами я могу решить мою проблему с помощью цикла:

for index, row in locations.iterrows():    

    folium.CircleMarker(location=(row["Pickup_latitude"],
                              row["Pickup_longitude"]),
                    radius=20,
                    color="#0A8A9F",fill=True).add_to(marker_cluster)

Я обнаружил, что в отличие от фрейма данных панд, фрейм данных искры не может быть обработан циклом => как зацикливатьсячерез каждую строку dataFrame в pyspark .

, поэтому я подумал, что если я могу создать проблему и разрезать большие данные в таблицы улья, то итерируем их.

Можно вырезать огромный массив данных SPARK в таблицах улья, а затем итерировать строки с циклом?

1 Ответ

0 голосов
/ 30 мая 2018

Как правило, вам не нужно перебирать DataFrame или RDD.Вы только создаете transformations (например, карту), которая будет применяться к каждой записи, а затем вызывать некоторые action для вызова этой обработки.

Вам нужно что-то вроде:

dataframe.withColumn("latitude", <how to extract latitude>)
         .withColumn("longitude", <how to extract longitude>)
         .select("latitude", "longitude")
         .rdd
         .map(row => <extract values from Row type>)
         .collect()         // this will move data to local collection

InВ случае, если вы не можете сделать это с помощью SQL, вам нужно сделать это с помощью RDD:

dataframe
     .rdd
     .map(row => <create new row with latitude and longitude>)
     .collect()
...