2017-07-06 62 views
2

我正在使用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:[email protected]:9000/value_iq does not exist!

不知怎的,它加入其中kitchen.sh位于HDFS网址前面的路径,假设目的地环境是本地的。

这是我的Hadoop复制文件的步骤

This is a screenshot of my Hadoop Copy Files step

这个bug的JIRA报告已创建的截图:http://jira.pentaho.com/browse/PDI-16443

回答

0

它了与UI依赖性的问题。提交杰拉案请http://jira.pentaho.com

+0

谢谢,我创建了jira问题http://jira.pentaho.com/browse/PDI-16443 – Jose

+0

也似乎首先你尝试复制错误配置的hadoop集群。 因此,请检查您的文件夹中是否存在名称为“hdfs:”的文件夹:///value_iq/bin/kettle/data-integration_7.1/ 如果存在,请将其删除。 – Sedos

0

据我可以看到PDI预计一个不存在的文件。创造它!

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

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

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

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

+0

感谢您的回答,是的,我知道这些生产细节,但这里的问题是不同的,正如您所看到的,kettle正在为Hadoop URL添加本地路径(file:/// value_iq/bin/kettle/data-integration_7.1/hdfs:/ hadoop:[email protected]:9000/value_iq)独立于本地系统,因为它存在于远程集群中。并且由于错误与目标文件夹相关,因此不期待文件。 – Jose

+0

然后,我的答案是@Sedos – AlainD

+0

我的avise与[https://stackoverflow.com/users/1006572/sedos](Sedos)相同,将案例提升到Jira。 – AlainD