Перейти к основному содержимому
Версия: 2.0.x

DataX writer

Введение

Плагин SelenaWriter позволяет записывать данные в целевую таблицу Selena. В частности, SelenaWriter импортирует данные в Selena в формате CSV или JSON через Stream Load и внутренне кэширует и массово импортирует данные, прочитанные reader, в Selena для лучшей производительности записи. Общий поток данных: source -> Reader -> DataX channel -> Writer -> Selena.

Скачать плагин

Перейдите на https://github.com/alibaba/DataX, чтобы скачать полный пакет DataX, и поместите плагин selenawriter в директорию datax/plugin/writer/.

Используйте следующую команду для тестирования: python datax.py --jvm="-Xms6G -Xmx6G" --loglevel=debug job.json

Описание функциональности

Пример конфигурации

Вот файл конфигурации для чтения данных из MySQL и загрузки в Selena.

{
"job": {
"setting": {
"speed": {
"channel": 1
},
"errorLimit": {
"record": 0,
"percentage": 0
}
},
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "xxxx",
"password": "xxxx",
"column": [ "k1", "k2", "v1", "v2" ],
"connection": [
{
"table": [ "table1", "table2" ],
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/datax_test1"
]
},
{
"table": [ "table3", "table4" ],
"jdbcUrl": [
"jdbc:mysql://127.0.0.1:3306/datax_test2"
]
}
]
}
},
"writer": {
"name": "selenawriter",
"parameter": {
"username": "xxxx",
"password": "xxxx",
"database": "xxxx",
"table": "xxxx",
"column": ["k1", "k2", "v1", "v2"],
"preSql": [],
"postSql": [],
"jdbcUrl": "jdbc:mysql://172.28.17.100:9030/",
"loadUrl": ["172.28.17.100:8030", "172.28.17.100:8030"],
"loadProps": {}
}
}
}
]
}
}

Описание параметров Selenawriter

  • username

    • Описание: Имя пользователя базы данных Selena

    • Обязательный: Да

    • Значение по умолчанию: нет

  • password

    • Описание: Пароль для базы данных Selena

    • Обязательный: Да

    • Значение по умолчанию: нет

  • database

    • Описание: Имя базы данных для таблицы Selena

    • Обязательный: Да

    • Значение по умолчанию: нет

  • table

    • Описание: Имя таблицы в Selena

    • Обязательный: Да

    • Значение по умолчанию: нет

  • loadUrl

    • Описание: Адрес FE Selena для stream load, может быть несколько адресов FE в формате fe_ip:fe_http_port.

    • Обязательный: да

    • Значение по умолчанию: нет

  • column

    • Описание: Поля целевой таблицы, в которые необходимо записать данные, столбцы разделяются запятыми. Пример: "column": ["id", "name", "age"].

      Параметр конфигурации column должен быть указан и не может быть пустым. Примечание: Мы настоятельно не рекомендуем оставлять его пустым, потому что ваше задание может работать неправильно или завершиться с ошибкой при изменении количества столбцов, типа и т. д. целевой таблицы. Элементы конфигурации должны быть в том же порядке, что и querySQL или column в reader.

  • Обязательный: Да

  • Значение по умолчанию: нет

  • preSql

  • Описание: Стандартный оператор, который будет выполнен перед записью данных в целевую таблицу.

  • Обязательный: Нет

  • Значение по умолчанию: нет

  • jdbcUrl

    • Описание: Информация о JDBC-подключении к целевой базе данных для выполнения preSql и postSql.

    • Обязательный: Нет

  • Значение по умолчанию: нет

  • loadProps

    • Описание: Параметры запроса для StreamLoad, подробности см. на странице введения в StreamLoad.

    • Обязательный: Нет

    • Значение по умолчанию: нет

Преобразование типов

По умолчанию входящие данные преобразуются в строки с t в качестве разделителя столбцов и n в качестве разделителя строк для формирования csv файлов для импорта StreamLoad. Чтобы изменить разделитель столбцов, настройте loadProps соответствующим образом.

"loadProps": {
"column_separator": "\\x01",
"row_delimiter": "\\x02"
}

Чтобы изменить формат импорта на json, настройте loadProps соответствующим образом.

"loadProps": {
"format": "json",
"strip_outer_array": true
}

Формат json используется для импорта данных в Selena в формате JSON.

О часовом поясе

Если исходная библиотека находится в другом часовом поясе, при выполнении datax.py добавьте следующий параметр после команды

"-Duser.timezone=xx"

Например, если DataX импортирует данные PostgreSQL и исходная библиотека находится в часовом поясе UTC, добавьте параметр "-Duser.timezone=GMT+0" при запуске.