从厨房执行工作时工作中的不同行为

时间:2017-07-06 16:43:23

标签: hadoop hdfs pentaho-data-integration

我正在使用Pentaho Data Integration 7.1将一些本地文件复制到Hadoop 2.8.0群集。我在Pentaho上创建了一个Hadoop集群连接,我正在使用Hadoop Copy Files步骤。当我从GUI(spoon.sh)执行我的作业时,我可以成功上传文件,我可以在日志中看到以下行:

Hadoop Copy Files - Processing row source File/folder source : [file:///home/etl/Desktop/users_full_20170620.csv] ... destination file/folder : [hdfs://hadoop:***@spark-master.cu:9000/value_iq]... wildcard : [null]

但是当我尝试使用kitchen.sh尝试运行相同的转换时,我收到以下错误:

Hadoop Copy Files - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Folder file:///value_iq/bin/kettle/data-integration_7.1/hdfs:/hadoop:hadoop@spark-master.cu:9000/value_iq does not exist!

不知何故,它添加了kitchen.sh位于hdfs网址前面的路径,假设目的地环境是本地的。

这是我的Hadoop复制文件步骤

的屏幕截图

This is a screenshot of my Hadoop Copy Files step

已创建此错误的JIRA报告http://jira.pentaho.com/browse/PDI-16443

2 个答案:

答案 0 :(得分:0)

这是UI依赖的一个问题。请在http://jira.pentaho.com

上提交jira案例

答案 1 :(得分:0)

据我所知,PDI期望一个不存在的文件。创造它!

要将PDI解决方案从dev移动到prod,请使文件引用相对。不要对文件夹名称进行硬编码,而是按Ctrl-space,然后选择${Internal.Job.Filename.Directory},它将在运行时被包含您的作业/转换的目录名称替换,并且在您的开发机器和您的产品上有所不同环境。

您可以在每个联合之前手动设置这些名称:您将看到一个参数和变量列表,其中包含您可以为此次运行更改的{Internal.Job.Filename.Directory

你也可以(我建议你在开发过程的早期这样做)定义你自己的变量。在顶部菜单中Edit the kettle.properties,然后添加my-dir。它将显示在Ctrl-spacerun options上。 kettle.properties存储在一个名为.kettle的隐藏目录中,与您的开发机器和您的产品不同。

您将很快如何使用Get variablesSet variable在作业和transfos中设置和更改这些变量,以便自动加载循环。 SOme示例可以在PDI发行版随附的sample目录中找到。