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.
- Описание: Поля целевой таблицы, в которые необходимо записать данные, столбцы разделяются запятыми. Пример: "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используется для импорта данных в Selena в формате JSON.