我正在使用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复制文件步骤
的屏幕截图已创建此错误的JIRA报告:http://jira.pentaho.com/browse/PDI-16443
答案 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-space
和run options
上。 kettle.properties存储在一个名为.kettle
的隐藏目录中,与您的开发机器和您的产品不同。
您将很快如何使用Get variables
和Set variable
在作业和transfos中设置和更改这些变量,以便自动加载循环。 SOme示例可以在PDI发行版随附的sample
目录中找到。