Недавно я пробовал нечто похожее на ваш сценарий (но не совсем то же самое). Здесь много вариантов и движущихся частей, поэтому этот пост не является исчерпывающим. Надеюсь, что-то в этом поможет вам найти решение, к которому вы стремитесь.
Шаг 1. Разделение источника В потоке данных вы можете группировать похожие строки вместе с помощью Set Partitioning. Один из многих вариантов - по ключу (столбец в источнике): ![enter image description here](https://i.stack.imgur.com/nvucS.png)
В этом примере у нас 51 штат США (50 штатов + D C), и так получится 51 раздел.
Шаг 2: Настройки приемника Как вы выяснили, опция «Как данные в столбце» приводит к структурированному имени папки, например {columnName} = {columnValue}. Мне сказали, что это потому, что это стандарт в средах типа Hadoop / Spark. Внутри этой папки будет набор файлов, как правило, с именами, не основанными на использовании GUID.
«По умолчанию» даст тот же результат, что и в настоящее время, без имени папки на основе столбцов. Вывод в один файл "не требует пояснений, и это самая далекая вещь из того решения, к которому вы стремитесь. Если вы хотите контролировать окончательные имена файлов, лучший вариант, который я нашел, - это вариант" Шаблон ". Это сгенерирует файл ( s) с указанным именем и номером переменной [n]. Честно говоря, я не знаю, что сгенерирует раздел, но он может приблизить к вам результаты, к которым вы стремитесь, 1 файл на значение столбца .
![enter image description here](https://i.stack.imgur.com/OrFA7.png)
Некоторые предостережения:
- Имя папки определено в наборе данных приемника, а НЕ в потоке данных. Параметры набора данных действительно, вероятно, «Шаг 0.» Для вывода типа Blob вы, вероятно, можете жестко закодировать имя папки, например «myfolder / fileName- [n]». YMMV.
- К сожалению, ни один из этих параметров не разрешит использовать производный столбец для генерации имени файла. [Если вы откроете редактор выражений, вы обнаружите, что «Входящая схема» не заполнена.]
Шаг 3: Раковина Оптимизировать Последний Часть, с которой вы можете поэкспериментировать - это Sink Partitioning на вкладке Optimize: ![enter image description here](https://i.stack.imgur.com/bPdJl.png)
«Использовать текущее разбиение» сгруппирует результаты на основе раздела, установленного в исходной конфигурации. «Один раздел» сгруппирует все результаты в одну группу вывода (почти наверняка НЕ то, что вы хотите). «Установить разделение» позволит вам перегруппировать данные Sink на основе столбца Key. В отличие от настроек Sink, это позволит вам получить доступ к производному имени столбца, но я предполагаю, что вы столкнетесь с той же проблемой именования папок, что и сейчас.
На данный момент это все, что я знаю , Я считаю, что есть комбинация этих опций, которая даст то, что вы хотите, или что-то близкое к этому. Возможно, вам придется подойти к этому в несколько этапов, таких как вывод этого потока в папки с неправильными именами в промежуточное местоположение, а затем создание другого конвейера / потока, который обрабатывает каждую папку и сворачивает результаты в нужное имя.