#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 был создан для абстрагирования уровня кода и предоставления вам опыта использования полностью управляемого интегратора данных. Использование разделенных файлов не должно быть проблемой, но если вам действительно нужно их объединить, я предлагаю вам использовать следующий подход:
-
В верхней части вашей Pipeline Studio нажмите на Концентратор -> Плагины, найдите Динамический плагин Spark, нажмите на Развертывание, а затем на Готово (вы можете игнорировать файл JAR)
-
Вернитесь к своему конвейеру, выберите Spark в разделе приемника.
-
Замените свой плагин GCS на плагин Spark
-
В вашем плагине 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.
-
Разверните свой конвейер, и он будет готов к запуску
Комментарии:
1. Привет, Эстевес, спасибо за ответ, но если мы собираемся уменьшить количество разделов до 1, переместит ли это данные в один рабочий узел? и будет ли нагрузка на один узел?
2. @SUDHIRGARG Вы правы. По этой причине этот подход займет больше времени, чем другой. К сожалению, это единственный способ сделать это напрямую. Другим подходом может быть отдельный процесс объединения файлов
3. @SUDHIRGARG если это помогло вам в конце, рассмотрите возможность повышения