У меня есть память в памяти. Я хотел бы сгруппировать RDD с помощью некоторой произвольной функции, а затем выписать каждую отдельную группу как отдельный файл Parquet.Выполните группу на RDD в Spark и напишите каждую группу как отдельный файл Parquet
Например, если мой РДД состоит из JSON строки вида:
{"type":"finish","resolution":"success","csr_id": 214}
{"type":"create","resolution":"failure","csr_id": 321}
{"type":"action","resolution":"success","csr_id": 262}
Я хочу, чтобы сгруппировать строки JSON свойства «типа», и записать каждую группу строк с тем же «type» в тот же файл Parquet.
я могу видеть, что DataFrame API позволяет писать паркетные файлы следующим образом (например, если РДД состоит из JSON строк):
final JavaRDD<String> rdd = ...
final SQLContext sqlContext = SQLContext.getOrCreate(rdd.context());
final DataFrame dataFrame = sqlContext.read().json(rdd);
dataFrame.write().parquet(location);
Это означало бы, что весь DataFrame записывается в Паркетном файл, поэтому файл Parquet будет содержать записи с разными значениями для свойства type.
Dataframe API также предоставляет функцию GroupBy:
final GroupedData groupedData = dataFrame.groupBy(this::myFunction);
Но GroupedData API, как представляется, не предоставлять какую-либо функцию для записи из каждой группы в отдельный файл.
Любые идеи?