Разделение фрейма данных на несколько фреймов в Scala Spark - PullRequest
0 голосов
/ 27 сентября 2019

У меня ниже JSON-файл (подробности) в hadoop.Я могу читать этот файл с hd fs с помощью SQL Context read json.Затем нужно разбить файл на количество файлов в зависимости от даты и добавить дату к имени файла (в файле может быть любое количество дат).

Имя входного файла: подробности

{"Name": "Pam", "Address": "", "Gender":"F", "Date": "2019-09-27 06:47:57"}
{"Name": "David", "Address": "", "Gender":"M", "Date": "2019-09-27 10:47:56"}
{"Name": "Mike", "Address": "", "Gender":"M", "Date": "2019-09-26 08:48:57"}

ожидаемые выходные файлы:

Имя файла 1: подробности_20190927

{"Name": "Pam", "Address": "", "Gender":"F", "Date": "2019-09-27 06:47:57"}
{"Name": "David", "Address": "", "Gender":"M", "Date": "2019-09-27 10:47:56"}

Имя файла 2: подробности_20190926

{"Name": "Mike", "Address": "", "Gender":"M", "Date": "2019-09-26 08:48:57"}

1 Ответ

0 голосов
/ 28 сентября 2019

Пути не будут точно такими, как вы их указали, но вы можете записать записи в разные файлы, например так:

import org.apache.spark.sql.functions._;
import spark.implicits._

val parsed = spark.read.json("details.json")
val repartitioned = parsed.repartition(col("Date"))
val withPartitionValue = parsed.withColumn("PartitionValue", date_format(col("Date"),"yyyyMMdd"))
withPartitionValue.write.partitionBy("PartitionValue").json("/my/output/folder")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...