Как записать каждый раздел dataframe в разные таблицы - PullRequest
0 голосов
/ 04 июля 2019

Я использую Databricks для подключения к Eventhub, где каждое сообщение, приходящее из EventHub, может сильно отличаться от другого.

В сообщении у меня есть тело и идентификатор.

Я ищу производительность, поэтому я избегаю сбора данных или ненужных обработок, а также хочу сделать сохранение параллельно по разделам.Однако я не уверен, как это сделать правильно.

Я хочу добавить тело каждого идентификатора в отдельную И УДЕЛЬНУЮ таблицу в пакетах , идентификатор даст мне информацию, которую мне нужно сохранить в нужной таблице.Поэтому, чтобы сделать это, я пробовал 2 подхода:

  1. Разделение: перераспределение (numPartitions, ID) -> ForeachPartition
  2. Группировка:groupBy ('ID'). apply (myFunction) # @ pandas_udf GROUPED_MAP

Подход 1 не выглядит очень привлекательным для меня, процесс перераспределения выглядит довольно ненужным, и я увидел вДокументы о том, что даже если я установлю столбец как раздел, он может сохранить множество идентификаторов этого столбца в одном разделе.Он только гарантирует, что все данные, относящиеся к этому идентификатору, находятся в разделе и не разделены

Подход 2 заставляет меня выводить из pandas_udf, фрейма данных с той же схемой ввода, что не произойдеттак как я преобразовываю сообщение eventhub из CSV в dataframe, чтобы сохранить его в таблице.Я мог бы вернуть тот же кадр данных, который получил, но это звучит странно.

Есть ли какой-нибудь хороший подход, которого я не вижу?

1 Ответ

1 голос
/ 04 июля 2019

Если у вашего идентификатора есть различное количество значений (тип столбца типа / страны), вы можете использовать для хранения partitionBy, и, следовательно, сохранение их в другой таблице будет быстрее. В противном случае создайте производный столбец (используя withColumn) из столбца идентификатора, используя ту же логику, которую вы хотите использовать при разделении данных между таблицами. Затем вы можете использовать этот производный столбец в качестве столбца раздела для быстрой загрузки.

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