1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/nivalsoul-kettlePlugins

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

kettle通用插件

Через файл конфигурации в формате JSON можно разрабатывать собственные плагины. В файле конфигурации все данные могут быть представлены в виде переменных.

Разработка

  1. Скачайте исходный код плагина.
    • Скачайте исходный код с помощью Git или загрузите ZIP-файл.
  2. Подготовьте среду:
    • Установите Maven и JDK 8.
    • Установите JAR-пакет Kettle в локальный репозиторий Maven:
      • Сначала скачайте дистрибутив Kettle версии 6 или 7.
      • Затем используйте следующую команду для установки JAR (перейдите в каталог kettle/lib или измените путь к JAR в скрипте, либо скопируйте JAR в другой каталог и запустите команду оттуда):
        mvn install:install-file -Dfile=./kettle-core-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=kettle-core -Dversion=6.1.0.1-196 -Dpackaging=jar
      Здесь swt-6.1.0.1-196.jar — это файл swt.jar, который находится в каталоге libswt дистрибутива Kettle для Windows. Чтобы обеспечить единообразие, необходимо скопировать файл и переименовать его. Здесь в качестве примера используется версия 6.1.0.1–196: mvn install:install-file -Dfile=./kettle-dbdialog-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=kettle-dbdialog -Dversion=6.1.0.1-196 -Dpackaging=jar mvn install:install-file -Dfile=./kettle-engine-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=kettle-engine -Dversion=6.1.0.1-196 -Dpackaging=jar mvn install:install-file -Dfile=./kettle-ui-swt-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=kettle-ui-swt -Dversion=6.1.0.1-196 -Dpackaging=jar mvn install:install-file -Dfile=./pentaho-metadata-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=pentaho-metadata -Dversion=6.1.0.1-196 -Dpackaging=jar mvn install:install-file -Dfile=./metastore-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=metastore -Dversion=6.1.0.1-196 -Dpackaging=jar mvn install:install-file -Dfile=./swt-6.1.0.1-196.jar -DgroupId=org.pentaho.di -DartifactId=swt -Dversion=6.1.0.1-196 -Dpackaging=jar
  3. Процесс разработки:
    • Используйте Eclipse или IDEA для импорта проекта.
    • Измените номер версии Kettle и путь установки в файле pom.xml.
    • После компиляции и сборки откройте Kettle, чтобы проверить успешность сборки. Плагин должен находиться в папке CommonPlugin.
  4. Разработка собственного плагина:
    • Создайте класс, который наследуется от класса Nivalsoul.Kettle.Plugins.Common.CommonStepRunBase.
    • Переопределите метод disposeRow() для обработки каждой строки данных. Вы можете использовать существующие реализации плагинов в качестве примеров.
    • Если необходимо, вы можете переопределить методы init() и end() для выполнения инициализации и очистки.
    • Соберите плагин и убедитесь, что он находится в папке plugins каталога Kettle.
    • Здесь используются зависимости POI версии 3.17, httpmime версии 4.5.1, а также Fastjson и Guava. Если вам нужно использовать пользовательский ввод из Excel или REST, поместите соответствующие файлы в папку Kettle/lib.
  5. Перезапустите Kettle. Перетащите плагин в поток преобразования в графическом интерфейсе. Настройте плагин следующим образом:
    • Выберите «Пользовательский» в качестве типа плагина (если вы хотите указать уникальное имя, добавьте соответствующее имя в перечисление Nivalsoul.Kettle.Plugins.Common.PluginType).
    • Введите полное имя вашего класса в поле «Класс».
    • Укажите конфигурацию в формате JSON. Эта конфигурация будет использоваться в вашем плагине (если вы добавили новое имя плагина в перечисление, вы также можете создать соответствующий файл конфигурации JSON в папке ресурсов, чтобы автоматически загружать настройки по умолчанию при выборе этого типа плагина).

Использование существующих плагинов:

  1. Поместите плагин в папку plugins/CommonPlugin (имя может быть любым).
  2. Добавьте необходимые JAR-файлы в папку Kettle/lib, если это требуется.
  3. Перезапустите Kettle.
  4. Выберите плагин из списка слева для использования. Новые версии находятся в разделе «Преобразование», а старые — в разделе CommonPlugin.

Пользовательские типы ввода: В настоящее время реализованы два типа пользовательских входных данных: из REST API и через SAX-парсер для Excel.

  1. REST-ввод:
{
    "inputType":"rest",
    "url":"",
    "method":"get",
    "headers": {},
    "useSSL": false,
    "loginUser": "",
    "loginPass": "",
    "params": {},
    "isUploadFile": false,
    "files": ["D:/aa.txt","E:/c.jpg"],
    "resultField":"result"
}

Здесь:

  • method — тип запроса: get/post.
  • headers — обязательные заголовки запросов, которые могут быть пустыми: {}.
  • useSSL — для некоторых сред запросы https могут вызывать ошибки проверки подлинности PKIX. Установите этот параметр в true, чтобы обойти проверку подлинности.
  • loginUser — HTTP-логин, который можно удалить или оставить пустым, если он не нужен.
  • loginPass — HTTP-пароль, который можно удалить или оставить пустым, если он не нужен.
  • params — параметры запроса post. Они будут работать только при использовании метода post.
  • isUploadFile — указывает, является ли запрос post загрузкой файла. Установите значение true для загрузки файлов. В этом случае необходимо указать список файлов в параметре files.
  • files — список путей к файлам для загрузки. Используется только для запросов post, когда isUploadFile имеет значение true.
  • resultField — имя поля результата. Не требуется указывать outputFields.
  1. Ввод Excel:
{
    "inputType":"excel",
    "filename":"",
    "header":true,
    "sheetNum": 0,
    "outputFields":[
        {"name":"col1", "type": "String"},
        {"name":"col2", "type": "String"},
        {"name":"col3", "type": "String"}
    ]
}

Здесь:

  • filename — имя файла Excel, которое может иметь формат .xls или .xlsx. Можно использовать переменные формата Kettle или переменные.
  • header — установите значение true, если есть заголовок таблицы, и false, если заголовка нет.
  • sheetNum — номер листа. -1 означает чтение всех листов, 0 означает чтение первого листа и т. д. Это целое число, поддерживающее переменные.
  • outputFields — список выходных полей. Можно использовать имена для соответствия полям заголовка таблицы или использовать их для указания собственных имён и порядка полей. Если вы хотите использовать только поля заголовка таблицы в качестве выходных полей, установите header в значение true и удалите или оставьте пустым outputFields. Если вы хотите задать собственные имена или порядок полей или дополнить поля из нескольких файлов Excel, установите header в значение true, укажите нужные поля в outputFields и сопоставьте их с полями заголовка таблицы. Выходные поля будут следовать порядку, указанному в outputFields, или будут равны null, если сопоставление не удастся. Поле с именем «absFilePath» можно использовать для вывода полного пути к файлу.

Вывод в JSON-файл: Поддерживается вывод данных в массив или объект JSON. Конфигурация по умолчанию выглядит следующим образом:

{
    "outputType":"array",
    "fileName":"your-json-filename.json",
    "fieldName":"data",
    "batchSize": 1000
}

Здесь:

  • outputType — можно выбрать «object» или «array» для вывода объекта или массива JSON соответственно.
  • fieldName — имя выходного поля для объекта JSON. Все данные потока будут представлены как массив значений. Перевод текста на русский язык:

[ ]}), когда outputType является объектом, это действует.

  • batchSize указывает, сколько строк данных записывается в файл за один раз.

Вывод в таблицу Hive

Поддерживает вывод в таблицы Hive типа textfile/orc/parquet, а также только вывод в соответствующие файлы формата hdfs без создания таблицы Hive. По умолчанию конфигурация следующая:

{
    "hadoopUserName":"hive",
    "hdfsUrls":"192.168.100.11:8020;192.168.100.12:8020",
    "hdfsFileName":"/tmp/hiveload/aaa.orc",
    "hiveDriver":"org.apache.hive.jdbc.HiveDriver",
    "hiveUrl":"jdbc:hive2://192.168.100.11:10000/default",
    "hiveUser":"hive",
    "hivePassword":"hive",
    "createTable":"true",
    "tableType":"orc",
    "hiveTable":"xuwl_orc",
    "partitionField":[
        {"name":"dt", "type":"string"}
    ],
    "partitionValue":[
        {"name":"dt", "value":"2019-12-04"}
    ],
    "overwrite":"true",
    "fieldSeparator":"\t",
    "lineSeparator":"\n"
}

Здесь:

  • hadoopUserName — владелец файла HDFS, чтобы у команды hive load были права доступа;
  • hdfsUrls — узлы namenode HDFS; если настроена HA, то указываются все соответствующие узлы через точку с запятой;
  • hdfsFileName — имя файла, хранящегося в HDFS;
  • hiveDriver, hiveUrl, hiveUser, hivePassword — информация для подключения к hiveServer2 через jdbc;
  • createTable — указывает, создавать ли таблицу Hive, принимает значения «true» или «false»;
  • tableType — может быть одним из [text/orc/parquet];
  • hiveTable — окончательное имя таблицы Hive;
  • partitionField — список полей раздела, поля указываются в порядке их следования, тип поля соответствует типу данных Hive;
  • partitionValue — значение поля раздела, соответствует порядку полей, value указывает конкретное значение;
  • overwrite — указывает, перезаписывать ли исходную таблицу, принимает значения «true» или «false»;
  • fieldSeparator — разделитель столбцов, lineSeparator — разделитель строк, действуют только при tableType = text.
Примечание:

Данный плагин не содержит jar-файлы, связанные с Hadoop и Hive. Если они не были добавлены ранее, возможно появление ошибки. Необходимо добавить соответствующие jar-файлы в папку kettle/lib в зависимости от версии кластера. В основном это следующие файлы: hadoop-auth-2.6.0.jar, hadoop-common-2.6.0.jar, hadoop-hdfs-2.6.0.jar, hive-exec-2.1.0.jar, hive-jdbc-1.1.0-cdh5.10.0.jar, protobuf-java-2.5.0.jar, htrace-core4-4.0.1-incubating.jar, fastjson-1.2.7.jar, servlet-api-2.5.jar и другие. При необходимости можно добавить дополнительные файлы в зависимости от конкретной ошибки. Эти jar-файлы можно найти в плагине bigdata для Kettle или в установочном пакете для больших данных кластера. Здесь есть одна копия: https://yun.baidu.com/s/1zxnUL48ZiWWUnWLfknAx4g пароль: hetg.

Чтение файлов HDFS

Поддерживается чтение одного текстового файла из HDFS. Конфигурация по умолчанию:

{
    "hdfsUrls":"10.6.1.19:8020;10.6.1.20:8020",
    "fileName":"/tmp/aa.txt",
    "fileType":"text",
    "fieldSeparator":"\t",
    "lineSeparator":"\n",
    "outputFields":[
        {"name":"id", "type":"Integer"},
        {"name":"xm", "type": "String"},
        {"name":"age", "type": "String"},
        {"name":"title", "type": "String"}
    ]
}

Здесь:

  • hdfsUrls — узлы namenode HDFS, если настроена HA, указываются все соответствующие узлы через точку с запятой;
  • fileName — имя файла в HDFS, в настоящее время поддерживается только для файлов;
  • fileType — тип файла;
  • fieldSeparator — разделитель столбцов;
  • lineSeparator — разделитель строк;
  • outputFields — список выходных полей.
Примечание:

Для этого плагина также требуются jar-файлы Hadoop.

Преобразование данных

Поддерживаются преобразования китайского языка (упрощённый и традиционный), преобразование китайских иероглифов в пиньинь, кодирование и декодирование base64, MD5, шифрование SHA256. Конфигурация:

{
    "changeConfig": [
        {"inputField": "field1", "changeType": "sc2tc", "outputField": "field2"},
        {"inputField": "field3", "changeType": "hz2py", "outputField": "field4"}
    ]
}

Здесь inputField — поле, которое нужно преобразовать, outputField — новое имя поля после преобразования, оно может совпадать с inputField. changeType определяет тип преобразования:

  • sc2tc (преобразование упрощённого китайского в традиционный);
  • tc2sc (преобразование традиционного китайского в упрощённый);
  • hz2py (преобразование китайских иероглифов в пиньинь);
  • base64Encode (кодирование base64);
  • base64Decode (декодирование base64);
  • MD5 (шифрование MD5);
  • SHA256 (шифрование SHA256).

Прочее

Если у вас возникнут какие-либо проблемы во время разработки, вы можете обратиться за помощью в QQ-группу (195548102).

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Плагин для Kettle, который позволяет разрабатывать пользовательские плагины с помощью конфигурационного файла в формате JSON. Развернуть Свернуть
GPL-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/nivalsoul-kettlePlugins.git
git@api.gitlife.ru:oschina-mirror/nivalsoul-kettlePlugins.git
oschina-mirror
nivalsoul-kettlePlugins
nivalsoul-kettlePlugins
master