Как разделить фрейм данных на несколько столбцов и записать вывод в xlsx в Apache Spark - PullRequest
0 голосов
/ 26 марта 2020

Я новичок в scala и не знаю, как задать такой вопрос (техническое слово ...). У меня есть датафрейм:

id     VehicleID         Longitude    Latitude     Date         Distance
1       12311            55.55431     25.45631     01/02/2020    20
2       12311            55.55432     25.45634     01/02/2020    80
3       12311            55.55433     25.45637     02/02/2020    10
4       12311            55.55431     25.45621     02/02/2020    50
5       12309            55.55427     25.45627     01/02/2020    30
6       12309            55.55436     25.45655     02/02/2020    20
7       12412            55.55441     25.45657     01/02/2020    14
8       12412            55.55442     25.45656     02/02/2020    60

Я хочу сохранить каждый раздел по Vehicle_id и дате в отдельном файле. Для экзамена

 Save tha on a xlsx file named : 12311_01/02/2020

 id     VehicleID         Longitude    Latitude     Date         Distance
 1       12311            55.55431     25.45631     01/02/2020    20
 2       12311            55.55432     25.45634     01/02/2020    80

 Save tha on a xlsx file named : 12311_02/02/2020

 id     VehicleID         Longitude    Latitude     Date         Distance
 3       12311            55.55433     25.45637     02/02/2020    10
 4       12311            55.55431     25.45621     02/02/2020    50

 Save tha on a xlsx file named : 12309_01/02/2020

 id     VehicleID         Longitude    Latitude     Date         Distance
 5       12309            55.55427     25.45627     01/02/2020    30

Мне удалось сохранить его в одном файле, но я не могу сохранить в нескольких файлах в соответствии с разделом

df.cache().write.format("com.crealytics.spark.excel").option("header",true).save("test.xlsx")

Там Есть ли возможность сделать это на свече с scala?

Спасибо.

1 Ответ

1 голос
/ 26 марта 2020

Чтобы разбить ваш фрейм данных на два столбца, все, что вам нужно сделать, это вызвать partitionBy(), чтобы создать больше разделов и, наконец, сохранить файл в csv.


Следующие действия помогут вам:

df \
  .write \
  .partitionBy("VehicleID", "Date")
  .format("com.crealytics.spark.excel") \
  .option("header", "true") \
  .save("test.xlsx") \

В качестве альтернативы, если вы хотите, чтобы вывод был в формате csv:

df \
  .write \
  .partitionBy("VehicleID", "Date")
  .format("com.databricks.spark.csv") \
  .option("header", "true") \
  .save("test.csv") \
...