Использование DataFrame.foreachPartition, обработка разделов как фреймов данных - PullRequest
0 голосов
/ 05 октября 2018

У меня есть фрейм данных, который разделен на col0;в DF есть много строк на значение col0.У меня есть база данных, из которой я хочу получать пакеты данных, используя значения col0 в каждом разделе, но я не могу понять, как использовать foreachPartition, поскольку он возвращает Iterator[Row]

Вот псевдокод того, что я хочу сделать:

var df = spark.read.parquet(...).repartition(numPartitions, "col0")
df.foreachPartition((part_df : DataFrame) => {
  val values = part_df.select("col0").distinct
  val sql = "select * from table0 where col0 in (${values})" // or some smarter method :)
  val db_df = spark.read.jdbc(..., table = sql)
  part_df.join(db_dv, "col0") // and/or whatever else
})

Есть идеи?

1 Ответ

0 голосов
/ 26 октября 2018

Мне не удалось найти элегантное решение для этого, но я смог найти не элегантное решение.

Когда вы записываете в файловую систему, Spark напишет отдельный файл для каждого раздела.Затем вы можете использовать файловую систему для составления списка файлов, а затем считывать и обрабатывать каждый из них в отдельности как отдельный фрейм данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...