2013-12-17 33 views
2

請幫我解決... 我在這上面花了很多時間。在豬中加載多個文件 - 擴展

我有一個文件夾中的文件,我希望他們根據他們的文件名的順序加載。

我甚至已經寫了Java代碼的擴展來轉換文件名以匹配以下鏈接中的指南中的格式。

  1. Load multiple files in pig
  2. Pig Latin: Load multiple files from a date range (part of the directory structure)
  3. http://netezzaadmin.wordpress.com/2013/09/25/passing-parameters-to-pig-scripts/

我使用豬11.0

在我script.pig,

set io.sort.mb 10; 
    REGISTER 'path_to/lib/pig/piggybank.jar'; 

    data_ = LOAD '$input' USING org.apache.pig.piggybank.storage.XMLLoader('Data') AS (data_:chararray); 
    DUMP data_; 

在外殼

[[email protected] currentfolder]# pig -x local script.pig -param input=/20131217/{1..10}.xml 

返回錯誤:

[main] ERROR.org.apache.pig.Main - ERROR 2999: Unexpected error. Undefined parameter : input 
+0

嘗試指定「-param輸入= .. 。「在命令行中的」script.pig「之前。如果第一件事不起作用,請嘗試引用input =「...」 – Ruslan

+0

您的解決方案可以正常工作! {1..10}部分除外。當我鍵入{1,2,3,4,5,6,7,8,9,10}但不是{1..10}時,它可以嗎?根據我所包含的第二個鏈接,它現在給出ERROR 2244現在爲 – FailedMathematician

+0

,它表示擴展{1..10}是由Linux完成的,但不是由hdfs api完成的。任何建議或建議? – FailedMathematician

回答

0

我不知道爲什麼您使用的輸入參數。

例如,對於在文件夾中的所有文件加載MyFolder中/的currentdate /(以YYYYMMDD格式),我使用下面的腳本:

%default DATE `date +%Y%m%d`; 
x_basic_table = LOAD '/MyFolder/$DATE'; 

尼斯一天

+0

謝謝!我有多個相同日期和時間的記錄,每個記錄都存儲在單個文件中。知道排序的唯一方法是通過文件名。所以我需要它根據文件名(數字)加載文件(第一個條目必須來自最小數字的文件)。 – FailedMathematician

相關問題