Hadoop ApachePig:如何加载存储在hdfs中的序列文件?

Hadoop ApachePig:如何加载存储在hdfs中的序列文件?,hadoop,apache-pig,Hadoop,Apache Pig,我的序列文件直接存储在hdfs中,例如: grunt> ls grunt> ls /blabla hdfs://namenode1:54310/blabla/0411f03a-db7f-48d0-9542-5203304e3e81.seq<r 3> 185284523 hdfs://namenode1:54310/blabla/05be8fc0-e967-42e1-b76a-0d7108a69d17.seq<r 3> 201489688 hdfs://n

我的序列文件直接存储在hdfs中,例如:

grunt> ls   
grunt> ls /blabla
hdfs://namenode1:54310/blabla/0411f03a-db7f-48d0-9542-5203304e3e81.seq<r 3> 185284523
hdfs://namenode1:54310/blabla/05be8fc0-e967-42e1-b76a-0d7108a69d17.seq<r 3> 201489688
hdfs://namenode1:54310/blabla/06222427-519c-49c0-bbbf-49a9f43bbd13.seq<r 3> 196858576
hdfs://namenode1:54310/blabla/066da26a-48da-45b1-83f5-60d16475e40d.seq<r 3> 194832641
hdfs://namenode1:54310/blabla/07cbfc83-42a2-47bf-b364-d39da3a2d071.seq<r 3> 194806047
hdfs://namenode1:54310/blabla/10dea7b8-9ed3-4e66-b4bd-a3c07d8bf39e.seq<r 3> 166224702
我总是会出错:

输入:

您是否尝试过这种方式:

%default INPUT 'hdfs://namenode1:54310/blabla/*' 
?

如果你的.seq文件是可读的,它应该可以工作。看起来它们不是,因为您尝试这样做时应该加载一个文件。你能给出完整的日志行吗


可能您必须使用pig SequenceFileLoader。

您可以尝试以下方式读取序列文件:

清管器序列文件加载程序:

A = LOAD 'hdfs://namenode1:54310/blabla/*'  using org.apache.pig.piggybank.storage.SequenceFileLoader();
(或)使用象鸟:

REGISTER 'elephant-bird-pig-3.0.5.jar';
REGISTER 'elephant-bird-core-4.1.jar';
REGISTER 'elephant-bird-hadoop-compat-4.1.jar';   
A = LOAD 'hdfs://namenode1:54310/blabla/*'  using com.twitter.elephantbird.pig.load.SequenceFileLoader(); 

你说得对。这是一个权限问题默认输入'hdfs://namenode1:54310/blabla/*“很好
A = LOAD 'hdfs://namenode1:54310/blabla/*'  using org.apache.pig.piggybank.storage.SequenceFileLoader();
REGISTER 'elephant-bird-pig-3.0.5.jar';
REGISTER 'elephant-bird-core-4.1.jar';
REGISTER 'elephant-bird-hadoop-compat-4.1.jar';   
A = LOAD 'hdfs://namenode1:54310/blabla/*'  using com.twitter.elephantbird.pig.load.SequenceFileLoader();