在 pig 中加载多个文件 - 扩展
Posted
技术标签:
【中文标题】在 pig 中加载多个文件 - 扩展【英文标题】:Load multiple files in pig - extended 【发布时间】:2013-12-17 10:59:38 【问题描述】:请帮帮我... 我为此花费了很多时间。
我的文件夹中有文件,我希望根据文件名的顺序将它们加载到其中。
我什至还编写了 Java 代码来转换文件名以匹配以下链接中指南中的格式。
-
Load multiple files in pig
Pig Latin: Load multiple files from a date range (part of the directory structure)
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_;
在外壳中
[root@servername 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
【问题讨论】:
尝试在命令行中的“script.pig”之前指定“-param input=...”。如果第一件事不起作用,也尝试引用 input="..." 您的解决方案奏效了! 1..10 部分除外。当我输入 1,2,3,4,5,6,7,8,9,10 但不是 1..10 时可以,知道吗?它现在给出 ERROR 2244 好的,根据我包含的第二个链接,它说 1..10 的扩展是由 Linux 完成的,而不是 hdfs api。有什么建议或意见吗? 您是否按照我的建议尝试引用?我认为它会禁用 Linux 扩展。 Hadoop 的 glob 也可能存在限制。检查此处支持的确切 glob:books.google.com/… 【参考方案1】:我不知道你为什么要使用输入参数。
例如,为了加载文件夹 MyFolder/CurrentDate/ 中的每个文件(格式为 YYYYMMDD),我使用以下脚本:
%default DATE `date +%Y%m%d`;
x_basic_table = LOAD '/MyFolder/$DATE';
美好的一天
【讨论】:
谢谢!!我有多个具有相同日期和时间的记录,每条记录都存储在单独的文件中。知道排序的唯一方法是通过文件名。所以我需要它根据文件名(数字)加载文件(第一个条目必须来自最小数字的文件)。以上是关于在 pig 中加载多个文件 - 扩展的主要内容,如果未能解决你的问题,请参考以下文章