我有名为 part-r-000[0-9][0-9] 的文件,其中包含制表符分隔的字段。我可以使用查看它们hadoop fs -text part-r-00000
但无法使用 Pig 加载它们。
我尝试过的:
x = load 'part-r-00000';
dump x;
x = load 'part-r-00000' using TextLoader();
dump x;
但这只会给我垃圾。如何使用pig查看文件?
可能相关的是我的 hdfs 目前仍在使用 CDH-2。
此外,如果我将文件下载到本地并运行file part-r-00000
它说part-r-00000: data
,我不知道如何在本地解压。
根据HDFS文档, hadoop fs -text <file>
可用于“zip 和 TextRecordInputStream”数据,因此您的数据可能采用这些格式之一。
如果文件被压缩,通常 Hadoop 在输出到 HDFS 时会添加扩展名,但如果缺少扩展名,您可以尝试通过本地 unzipping/ungzipping/unbzip2ing/etc 进行测试。看来 Pig 应该自动执行此解压缩,但可能需要存在文件扩展名(例如,part-r-00000.zip)--更多信息.
我对 TextRecordInputStream 不太确定..听起来这只是 Pig 的默认方法,但我可能是错的。当我快速谷歌一下时,我没有看到任何提到通过 Pig 加载这些数据。
Update:既然您已经发现它是一个序列文件,那么您可以通过以下方式使用 PiggyBank 加载它:
-- using Cloudera directory structure:
REGISTER /usr/lib/pig/contrib/piggybank/java/piggybank.jar
--REGISTER /home/hadoop/lib/pig/piggybank.jar
DEFINE SequenceFileLoader org.apache.pig.piggybank.storage.SequenceFileLoader();
-- Sample job: grab counts of tweets by day
A = LOAD 'mydir/part-r-000{00..99}' # not sure if pig likes the {00..99} syntax, but worth a shot
USING SequenceFileLoader AS (key:long, val:long, etc.);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)