Передача переменных среды в преобразование чайника Pentaho с помощью сценария - PullRequest
0 голосов
/ 03 сентября 2018

Мне необходимо параметризовать все переменные в моем задании чайника и преобразовании (задания будут выполняться в AWS, а все параметры передаются как переменные среды).

Мои соединения, пути и другие параметры в задании и его сопутствующее преобразование используют стиль $ {SOURCE_DB_PASSWORD}, $ {OUTPUT_DIRECTORY}.

Когда я устанавливаю их как переменные среды в интерфейсе интеграции данных, все они работают, и задание успешно выполняется в инструменте пользовательского интерфейса . Когда я запускаю их из скрипта bash:

#!/bin/sh
export SOURCE_DB_HOST=services.db.dev
export SOURCE_DB_PORT=3306

kitchen.sh -param:SOURCE_DB_PORT=$SOURCE_DB_PORT -param:SOURCE_DB_HOST=$SOURCE_DB_HOST -file MY_JOB.kjb

Задание и преобразование, которое оно вызывает, не выбирают переменные. Ошибка:

Cannot load connection class because of underlying exception: 'java.lang.NumberFormatException: For input string: "${SOURCE_DB_PORT}"'

Таким образом, без использования файлов jndi или kettle.properties мне нужен какой-то способ сопоставления переменных среды с параметрами / переменными внутри заданий и преобразований PDI .

[PDI версии 8.1 в Mac OS X 10.13]

Ответы [ 5 ]

0 голосов
/ 13 марта 2019

Я просто пытался заставить этот материал работать. Флаги командной строки -param (или / param) работают только в том случае, если вы задаете параметры в спецификации задания, а затем явно передаете их всем преобразованиям, которые в них нуждаются.

Чтобы получить системные свойства, которые являются универсально доступными в работе, которую я использовал:

set "OPT=-Dname1=value -Dname2=value"

Перед вызовом на кухню. Это помещает флаги -D в опции Java. Надеюсь, это будет работать со спецификациями базы данных.

Конечно, вы можете поместить их в kettle.properties, но если вы хотите работать в разных средах, это может привести к путанице.

0 голосов
/ 30 октября 2018

Это типичная ошибка, когда pentaho ожидает целое число в номере порта, но получает строку s. Проверьте, есть ли пробел после номера порта в вашем скрипте оболочки

0 голосов
/ 03 сентября 2018

С шагом Get variable вы можете изменить параметры в переменные (столбцы) перед шагом Table input, не забывая указать Insert data from step.

Поскольку проблема возникает из-за ошибки формата типа, вы можете посмотреть, что PDI думает о переменной с шагом Write to log.

Скажите, сохраняется ли исключение в формате чисел.

0 голосов
/ 04 сентября 2018

Использование синтаксиса -param:SOURCE_DB_HOST=value в командной строке и синтаксиса ${SOURCE_DB_HOST} внутри заданий и преобразований - правильный путь.

То, что вам нужно сделать в преобразованиях (но не для заданий, которые появляются), это явное добавление к параметрам к свойствам преобразования (control-T или mac-T команды mac в рабочей области преобразования) , Снимок экрана прилагается.

Будет работать запуск задания или преобразования непосредственно из сценария оболочки.

enter image description here

0 голосов
/ 03 сентября 2018

Возможно, проблема не в параметрах, а в вводе таблицы. Можете ли вы проверить, отмечен ли Replace variables in script.

enter image description here

...