Pentaho — миграция из хранилища базы данных в хранилище файлов

#pentaho #kettle

#pentaho #чайник

Вопрос:

Я нахожусь в процессе переноса Pentaho из хранилища базы данных в хранилище файлов. Я экспортировал репозиторий базы данных в XML-файл, а затем создал репозиторий файлов и импортировал репозиторий… Первая проблема, которую я увидел после импорта, заключается в том, что все мои подключения к базе данных хранятся в файлах .ktr и .kjb, это будет большой проблемой, если я обновлю строку подключения, например, обновлю пароль, у меня более сотни вложенных преобразований и заданий, нужно ли мне обновлятьэто во всех этих файлах? Есть ли какой-либо способ игнорировать пароль и другие настройки подключения, которые хранятся в файлах .ktr и .kjb, и вместо этого использовать подключение к репозиторию или указать его в свойстве .kettle ?

Другая проблема, с которой я сталкиваюсь, заключается в том, что когда я пытаюсь запустить главное задание через kitchen в cmd, оно не распознает вспомогательные преобразования и задания. Однако, когда я меняю корень преобразования на $ {Internal .Запись.Текущий.Каталог} — суб-преобразование распознается и обрабатывается — Как я уже упоминал, у меня более 100 суб-преобразований и заданий — есть ли какой-либо способ обновить этот корень для всех заданий и преобразований одновременно.

Kitchen.bat /file:»C:pentaho-8-1Dev_RepohomejobsMainProcessMasterJob.kjb » /уровень: Базовый /файл журнала:»C:pentaho-8-1logsmy-job.txt «

Сбой с ошибкой (.ktr не является файлом или репозиторий не определен) с помощью importedroot

Однако, когда я меняю корневой каталог на $ {Internal .Запись.Текущий.Каталог} это работает!

с модифицированным корнем

Комментарии:

1. В обоих случаях ответ отрицательный. Простого способа нет. Вам необходимо обновить все ваши ktr / задания, чтобы изменить подключение к БД или местоположение преобразования / задания. Вы можете избежать изменения местоположения преобразования / задания, сохранив свою папку «MainProcess» в расположении «/ home / jobs»

2. Спасибо Runa. Я попытался переместить задание «MainProcess» в «/ home / jobs», однако я все еще получаю ту же ошибку (репозиторий не определен, а .ktr недействителен)

3. Поскольку вы используете ПК с Windows, необходимо создать /home/job path в том же каталоге, который вы использовали для запуска интеграции данных. Предположим, что ваша папка для интеграции данных находится на диске C:, тогда вам следует скопировать ваш процесс в C:/home/jobs/MainProcess/

Ответ №1:

Для подключений к базе данных вы можете сделать .kdbs в хранилище и введите переменные для всех свойств (хост, порт, схема, пользователь и т.д.) и определите их в kettle.properties или другом файле свойств.

Это работает как более удобная версия файлов JNDI, с одним файлом свойств для каждой среды. Вы можете легко проверить текущие значения, открыв свойства kettle из клиента Spoon (не редактируйте их, иначе это испортит макет!), И вы также можете поместить «зашифрованные» пароли kettle в файл свойств.

PDI по-прежнему будет сохранять копии подключений во все файлы .kjb и ktr (и теоретически должен обновлять их из .kdb или shared.xml при их открытии), но поскольку содержимое — это просто общие имена переменных ($ {STAGING_DB_HOST} и т.д.), Вы почти никогда не столкнетесь с проблемами с этим.

Для имен файлов преобразования хороший инструмент текстового поиска и замены должен исправить большинство ваших преобразований за один раз. Включите некоторые из тегов XML, чтобы предотвратить слишком большую замену.

Комментарии:

1. Сайрус, преобразование параметра подключения в переменные и помещение его в файл свойств сработало идеально. Однако, поскольку у меня было более 100 заданий и преобразований, даже если я превращаю соединения в переменные, это не обновило настройки подключения в моих файлах .kjb и .ktr. Итак, я вернулся и внес изменения в свой репозиторий базы данных, а затем снова экспортировал обратно в репозиторий файлов, и все настройки подключения обновлены.

2. Относительно одного файла свойств для каждой среды. Как мне настроить, чтобы я попробовал эту ссылку . однако я не мог понять, как вызвать файл .property для каждой среды-

3. @Shawn Вам нужна папка для каждой среды, каждая с папкой .kettle и файлами свойств в ней. Затем вы запускаете PDI с набором KETTLE_HOME=/path/to/environment . У меня есть файлы сценариев, которые устанавливают эту переменную, а затем вызывают spoon.sh , но в Windows пакетный файл должен работать одинаково хорошо.