Я использую Databricks для подключения к Eventhub, где каждое сообщение, приходящее из EventHub, может сильно отличаться от другого.
В сообщении у меня есть тело и идентификатор.
Я ищу производительность, поэтому я избегаю сбора данных или ненужных обработок, а также хочу сделать сохранение параллельно по разделам.Однако я не уверен, как это сделать правильно.
Я хочу добавить тело каждого идентификатора в отдельную И УДЕЛЬНУЮ таблицу в пакетах , идентификатор даст мне информацию, которую мне нужно сохранить в нужной таблице.Поэтому, чтобы сделать это, я пробовал 2 подхода:
- Разделение: перераспределение (numPartitions, ID) -> ForeachPartition
- Группировка:groupBy ('ID'). apply (myFunction) # @ pandas_udf GROUPED_MAP
Подход 1 не выглядит очень привлекательным для меня, процесс перераспределения выглядит довольно ненужным, и я увидел вДокументы о том, что даже если я установлю столбец как раздел, он может сохранить множество идентификаторов этого столбца в одном разделе.Он только гарантирует, что все данные, относящиеся к этому идентификатору, находятся в разделе и не разделены
Подход 2 заставляет меня выводить из pandas_udf, фрейма данных с той же схемой ввода, что не произойдеттак как я преобразовываю сообщение eventhub из CSV в dataframe, чтобы сохранить его в таблице.Я мог бы вернуть тот же кадр данных, который получил, но это звучит странно.
Есть ли какой-нибудь хороший подход, которого я не вижу?