Объединение файлов деталей в один с пользовательским именем

#google-cloud-data-fusion #cdap

#google-cloud-data-fusion #cdap

Вопрос:

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

Комментарии:

1. Используете ли вы GCS Multi File?

2. нет обычного файла GCS

3. Можете ли вы показать, как это настроено в вашей среде?

4. Привет, Эстевес, вы можете проверить настройки, установленные по ссылке ниже storage.googleapis.com/falcons_soco_args /…

Ответ №1:

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

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

  1. В верхней части вашей Pipeline Studio нажмите на Концентратор -> Плагины, найдите Динамический плагин Spark, нажмите на Развертывание, а затем на Готово (вы можете игнорировать файл 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. Разверните свой конвейер, и он будет готов к запуску

Комментарии:

1. Привет, Эстевес, спасибо за ответ, но если мы собираемся уменьшить количество разделов до 1, переместит ли это данные в один рабочий узел? и будет ли нагрузка на один узел?

2. @SUDHIRGARG Вы правы. По этой причине этот подход займет больше времени, чем другой. К сожалению, это единственный способ сделать это напрямую. Другим подходом может быть отдельный процесс объединения файлов

3. @SUDHIRGARG если это помогло вам в конце, рассмотрите возможность повышения