Data Integration — Kettle | Запуск трансформации или работы по расписанию.

Reading Time: 1 minute

Задача озвученная в заголовке тривиальная и не вызывает проблем у матёрых товарищей, только иногда им нужны подсказки.

Подсказка:
«запуск работы->исполняемый файл->планировщик задач»
«запуск трансформации->исполняемый файл->планировщик задач»

Ну а для таких как я, которые в танке и с первого раза не понимают, мы рассмотрим данную задачу подробнее.

Как выполнить трансформацию или работу в не графического интерфейса kettle.

Это ключевой момент при решении нашей задачи. Из моей подсказки выше «запуск работы,запуск трансформации» видно, что это сделать достаточно просто.

Запуск работа/Job

<br />
kitchen.bat /file:D:\Jobs\updateWarehouse.kjb /level:Basic<br />

<br />
kitchen.sh -file=/PRD/updateWarehouse.kjb -level=Minimal<br />

Файл kitchen.** расположен в корневой папке /data-integration/kitchen.**

Запуск трансформации

<br />
pan.bat /file:&quot;D:\Transformations\Customer Dimension.ktr&quot; /level:Basic<br />

<br />
pan.sh -file=&quot;/PRD/Customer Dimension.ktr&quot; -level=Minimal<br />

Файл pan.** расположен в корневой папке /data-integration/pan.**

file — путь до файла трансформации/работы.

level — уровень логирования хода выполнения трансформации/работы

Подробно останавливаться на параметрах запуска мы не будем. Вам придётся разбираться самостоятельно. Всё очень хорошо описано в документации. Наша задача просто показать куда капать и привести пример работы. Мы не можем знать весь перечень задач, которые вам потребуется решать.

Создаём исполняемый файл для нашей трансформации или работы.

Задача исполняемого файла заключается в том, что бы выполнить ту или иную работу или трансформацию в не графического интерфейса kettle. В качестве исполняемого файла может выступать совершенно всё что угодно, лишь бы это «что угодно» могло выполнить консольную команду. Для понимания мы рассмотрим два варианта:

  1. .bat —  Это самый простой вариант. Мне он не совсем нравиться из-за того, что командную строку видно каждый раз когда выполняется скрипт. Это достаточно напрягает и при случайном закрытии окна, процесс работы трансформации/работы останавливается.  Примеры:

    <br />
    C:\pdi-ce-5.4.0.1-130\data-integration\kitchen.bat /level:Basic /rep:iiemib /job:/runJbTr/Job_1 &gt;&gt; C:\kettle_repos\kettle_repo-IIEMIB\runJbTr\run_repo_bat.log<br />
    

    <br />
    C:\pdi-ce-5.4.0.1-130\data-integration\pan.bat /level:Basic /file:C:\kettle_repos\kettle_repo-IIEMIB\runJbTr\Transformation_1.ktr &gt;&gt; C:\kettle_repos\kettle_repo-IIEMIB\runJbTr\run_single_transformation.log<br />
    

  2. .vbs пример. Приведу только для запуска работы из репозитария. Суть заключается в том, что консольная команда всё та же как и в bat файле. Просто она запускается в оболочке shell в скрытом режиме. По данному примеру вы легко самостоятельно сделаете исполняемый файл vbs для одиночной трансформации.

    <br />
    '*******************************************************<br />
    ' метод wscript shell run<br />
    '*******************************************************<br />
    Option Explicit</p>
    <p>dim WshShell<br />
    Set WshShell = WScript.CreateObject(&quot;Wscript.Shell&quot;) ' создаём объект типа Shell<br />
    WshShell.Run &quot;C:\pdi-ce-5.4.0.1-130\data-integration\Kitchen.bat /level:Basic /rep:iiemib /job:/runJbTr/Job_1 &gt;&gt; &quot;&amp;WshShell.CurrentDirectory&amp;&quot;\run_repo_vbs.log&quot;, 0, false  'исполнение команды<br />
    Set WshShell = Nothing 'очищаем переменную<br />
    

Вариантов на самом деле масса, в плоть до оборачивания этого дела в exe файл. Вы вольны придумать собственный. Конкретно описанный мной варианты предназначен для операционной системы Windows. К сожалению для Linux рассматривать в этой статье мы не будем. Да и потом, если вы используете Linux в своей ежедневной работе, вам достаточно было подсказки, что написана выше.

Создаём задачу

Используйте планировщик задач windows. Если вы ни когда ранее не имели дела с планировщиком windows, то наглядную инструкцию можно найти по ссылке http://www.wseven.info/task/

 

Ссылка на пример:runJbTr

Data Integration — Kettle | Запуск трансформации или работы по расписанию.: 9 комментариев

  1. Vladimir

    Доброго времени суток.
    Подскажите может вы сталкивались нашел статьи, что можно добавить переменные в файл
    kettle.properties расположение этого файла как я понял зависит от параметра PENTAHO_HOME.
    Прописываю там переменные для подключения к БД. Эти переменные видны если запустить через spoon.bat т. е. через графику, а вот если запустить через батник с помощью планировщика заданий windows работать не хочет вываливается по ошибке. Неудобно прописывать подключение к БД в ручную каждому джобу или трансформации админы меняю пароли к БД и приходится править все в ручную.

  2. ilinei52 Автор записи

    Приветствую.

    1) Для всех скриптов 1-ин конфиг файл. Его чтение встроено в каждый скрипт и параметры устанавливаются через шаг «Set variables».
    2) Так же конфиг файл, но его чтение реализовано через отдельную трансформацию get_params к примеру. Если есть желание зачитывать различные параметры для различных скриптов, то можно даже передавать туда имя скрипта и получать по нему параметры.
    3) Джоб-обёртка. Его основная задача просто вызывать скрипты с нужными параметрами.
    4) Тот который вы описали выше. Через «kitchen.bat «-param:HOST_NAME=192.168.0.1» /level:Basic»
    5) Способ 4 с модификацией через переменные окружения «kitchen.bat «-param:HOST_NAME=»%HOST_NAME% /level:Basic». Предварительно создав конечно в системе на постоянной основе. (код примерный но должно работать)
    6) Прописать установку параметров непосредственно в Spoon.bat. Так как kitchen.bat вызывает именно его. https://mega.nz/#!ht0kzRqZ!arEnuOfcTU7V4IbDfgDLETNOTSrkUvuEA8fWk5Ee02A
    ——————————————-
    Сложно сказать какой способ вам подойдёт лучше всего. Вариантов реализаций может быть и больше, тут дело ограничивается только фантазией на самом деле. (webApi, свой планировщик задач с предустановленными параметрами, докрутить непосредственно в kettle, или вон мне пришлось пилить под node https://github.com/heliossector/pdi-tools)

  3. Vladimir

    Если запустить через батник (про кликнув по нему) со строкой:
    kitchen.bat /file:»C:\pentaho_rep\reporting\job\job.kjb» /level:Detailed
    отрабатывает нормально с прописанными параметрами в kettle.properties. Через планировщик задач не отрабатывает вываливается по ошибке
    An error occurred, processing will be stopped:
    Error occured while trying to connect to the database
    Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
    Исключение ввода/вывода: The Network Adapter could not establish the connection
    Error initializing step [Table input]
    Step [Table input.0] failed to initialize!

  4. Vladimir

    У меня версия 4.4.0 стоит . Сравнил файлы Kitchen.bat с 6-й версией в 6-й версии видно запускается Spoon.bat:
    @echo off
    setlocal
    pushd %~dp0
    SET STARTTITLE=»Kitchen»
    SET SPOON_CONSOLE=1
    call Spoon.bat -main org.pentaho.di.kitchen.Kitchen %*
    popd
    в 4-й версии я не нашел что бы запускался Spoon.bat

  5. Vladimir

    Удалил environment variable KETTLE_HOME и прописал переменные для подключения к БД
    в C:\Users\user\.kettle\kettle.properties
    так же запустил через планировщик все заработало. Думаю дело в настройках.
    Теперь придется для каждого пользователя просто прописать.

  6. Александр

    Подскажите кто-либо, ситуация такая.

    Из БД 1 беру 300к строк и через трансформацию и джоб заливаю в БД 2.
    При старте скорость записи 200-300 строк в секунду , после начинает падать. После часа записи скорость падает до 30-40 строк в секунду. С чем может быть связано ?

    1. ilinei52 Автор записи

      Какой именно шаг для загрузки вы используете?
      ——————
      Шаг: Insert/Update — работает плохо с большим объёмом данных. Вся проблему тут в update так как кетлу самому приходится генерировать запрос проверки по уникальному ключу.
      Шаг: Table Output — работает очень хорошо. Тут стоит не забывать о констрейнтах, которые весят на таблице. т.е. Если у вас много внешних ключей на эту таблицу, сложный уникальный ключ или дополнительные проверки значений, то тут конечно могут возникнуть проблемы. Хотя обычно с этим проблем особых нет, и наоборот используется как основной механизм верификации данных при загрузке. Дополнительно, скорость работы данного шага зависит от периодичности коммитов, посмотрите в этом направлении.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *