【发布时间】:2023-04-05 12:48:01
【问题描述】:
我有名为 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,我不知道如何在本地解压缩。
【问题讨论】:
-
我相信你的第一个
load使用 PigStorage,但也许你可以通过明确的方式仔细检查,x = LOAD 'part-r-00000' USING USING PigStorage('\t')。当您在本地下载文件时,如果您查看它(即tail),它是垃圾/二进制文件吗?您能举出生成此数据的代码示例吗? -
明确使用 PigStorage 会得到相同的结果。下载到本地(使用 -get 或 -copyToLocal)文件不可读,即。 e.二进制/垃圾(少或尾)。我会尝试找到创建这些文件的代码并报告。
-
该文件似乎已存储为序列文件。我已经能够使用用户定义的加载函数从中提取行。有没有比使用 udf 更简单的方法?
-
我用与序列文件相关的示例代码更新了我的答案。希望有帮助:)
标签: linux hadoop apache-pig cloudera