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.
- Описание: Поля целевой таблицы в которые нужно записать данные, столбцы разделены запятыми. Пример: "column": ["id", "name", "age"].
-
Обязательно: Да
-
Значение по умолчанию: Нет
-
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" при запуске.