Сшить файлы деталей в один с произвольным именем

Data Fusion Pipeline дает нам один или несколько файлов деталей на выходе при синхронизации в GCS Bucket. Мой вопрос в том, как мы можем объединить эти файлы деталей в один и дать им осмысленное имя?


person SUDHIR GARG    schedule 27.08.2020    source источник
comment
Вы используете GCS Multi File?   -  person rmesteves    schedule 27.08.2020
comment
нет нормального файла GCS   -  person SUDHIR GARG    schedule 28.08.2020
comment
Вы можете показать, как это настроено в вашей среде?   -  person rmesteves    schedule 28.08.2020
comment
Привет, Эстевес, вы можете проверить настройки, указанные ниже по ссылке storage.googleapis.com/falcons_soco_args/   -  person SUDHIR GARG    schedule 28.08.2020


Ответы (1)


Data Fusion преобразования выполняются в Dataproc кластерах, выполняя Spark или MapReduce задания. Ваш окончательный результат разбивается на множество файлов, потому что задания разбивают ваши данные на разделы HDFS (это поведение по умолчанию для Spark / Hadoop).

При написании сценария Spark вы можете манипулировать этим поведением по умолчанию и производить разные результаты. Однако Data Fusion был построен для абстрагирования уровня кода и предоставления вам опыта использования полностью управляемого интегратора данных. Использование разделенных файлов не должно быть проблемой, но если вам действительно нужно их объединить, я предлагаю вам использовать следующий подход:

  1. В верхней части Pipeline Studio нажмите Hub - ›Plugins, найдите Dynamic Spark Plugin, нажмите Deploy , а затем в Готово (файл JAR можно игнорировать)

  2. Вернувшись к конвейеру, выберите Spark в разделе раковины.

  3. Замените плагин GCS плагином Spark.

  4. В своем подключаемом модуле Spark установите для Компилировать во время развертывания значение false и замените код некоторым кодом Spark, который делает то, что вы хотите. Например, приведенный ниже код жестко запрограммирован, но работает:

     def sink(df: DataFrame) : Unit = {
       new_df = df.coalesce(1)
       new_df.write.format("csv").save("gs://your/path/")
     }
    

    Эта функция получает данные из вашего конвейера в виде фрейма данных. Функция coalesce сокращает количество разделов до 1, и последняя строка записывает его в GCS.

  5. Разверните свой конвейер, и он будет готов к запуску

person rmesteves    schedule 01.09.2020
comment
Привет, Эстевес, Спасибо за ответ, но если мы собираемся уменьшить количество разделов до 1, переместятся ли данные в один рабочий узел? а нагрузку на один узел возложат? - person SUDHIR GARG; 02.09.2020
comment
@SUDHIRGARG Вы правы. По этой причине этот подход займет больше времени, чем другой. К сожалению, это единственный способ сделать это напрямую. Другим подходом может быть отдельный процесс для объединения файлов. - person rmesteves; 02.09.2020
comment
@SUDHIRGARG, если это вам в конце концов помогло, подумайте о голосовании за - person rmesteves; 08.09.2020