2017-07-06 64 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