Перейти к основному содержимому

DataX writer

Введение

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

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

Перейдите на https://github.com/alibaba/DataX, чтобы скачать полный пакет DataX, и поместите плагин starrockswriter в директорию 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": "starrockswriter",
"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": {}
}
}
}
]
}
}

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

  • username

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

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

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

  • password

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

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

    • По умолчанию: Нет

  • database

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

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

    • По умолчанию: Нет

  • table

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

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

    • По умолчанию: Нет

  • loadUrl

    • Описание: Адрес Selena FE для 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 предназначен для того, чтобы writer импортировал данные в Selena в формате JSON.

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

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

"-Duser.timezone=xx"

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