Несколько сортированных выходных данных в искровой Java - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь определить несколько отсортированных выходных данных, используя наборы данных в искре

Ввод: -

city1 A1

city2 A2

City1 C1

city2 B2

city1 B1

city2 C2

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

output: -

File1:

city1 A1

city1 B1

city1 c1

аналогично file2будет содержать данные c2

1 Ответ

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

Очевидный способ - использовать partitonBy.Следующий код (в Scala) создаст папку для каждого города с необходимыми данными.

val df = List(
  ("city1","A1"), 
  ("city2","A2"), 
  ("city1","C1"), 
  ("city2","B2"),
  ("city1","B1"),
  ("city2","C2"))
  .toDF("city","val")

df.sort("city", "val")
  .withColumn("city-part",col("city"))
  .coalesce(1)
  .write
  .partitionBy("city-part")
  .format("csv")
  .save("/output-path")

Обратите внимание, что для того, чтобы внутри выходного файла был столбец "city", мы добавляем еще один столбец (city-part) с тем же значением для фрейма данных и использовать его для разделения.

...