2016-05-14 3 views
0

私はHDFSからファイルを読み込み、Dumpを使って出力をチェックしようとしています。しかし、私は欲望の出力を得ていない。私の入力ファイル( '/結果')は次のようになります。PIGのロードで正しい出力が得られない

1 fail 

2 fail 

3 pass 

4 pass 

5 fail 

6 pass 

7 fail 

8 pass 

9 pass 

10 pass 

11 pass 

12 fail 

13 fail  

14 fail 

15 pass 

16 pass 

17 pass 

18 pass 

19 pass 

20 fail 

をそして、この豚のコマンドは、私がコーディングしています:

A = LOAD '/results' using PigStorage() as (f1:int, f2:chararray); 
Dump A; 

しかし、次のように、私は出力を取得しています:

(1,fail) 
(,) 
(2,fail) 
(,) 
(3,pass) 
(,) 
(4,pass) 
(,) 
(5,fail) 
(,) 
(6,pass) 
(,) 
(7,fail) 
(,) 
(8,pass) 
(,) 
(9,pass) 
(,) 
(10,pass) 
(,) 
(11,pass) 
(,) 
(12,fail) 
(,) 
(13,fail) 
(,) 
(14,fail) 
(,) 
(15,pass) 
(,) 
(16,pass) 
(,) 
(17,pass) 
(,) 
(18,pass) 
(,) 
(19,pass) 
(,) 
(20,fail) 

"(、)"は2つのタプルの間に来ています。誰かが私を助けることができますか?

ありがとうございました。

答えて

0

ある場合は、単一のスペース

A = LOAD '/results' USING PigStorage(' ') as (f1:int, f2:chararray); 
DUMP A; 

で分離されている、あなたの列をPigStorage.Assumingにご入力ファイル内の列間の区切り文字を指定する必要がありますPigStorage()メソッドで正しい区切り文字を指定して、ファイルの内容を正しく読み込みます。

単一のスペースについては

:あなたはあなたのような入力データを持っている区切り文字に基づいて、その方法を変更する必要が

INPUT = LOAD '/results' USING PigStorage(' ') AS (f1: int, f2:chararray); 
DUMP INPUT 

タブ区切りの場合:

INPUT = LOAD '/results' USING PigStorage('\t') AS (f1:int, f2:chararray); 
DUMP INPUT; 

そのお二の部分について出力に(、)が出てきて、入力データの各2行の間に空の行があります。

ソリューション:

が論理的にヌルレコードを除外する(区切り文字を考慮すると、タブがある):

INPUT = LOAD '/results' USING PigStorage('\t') AS (f1: int, f2: chararray); 
INPUT = FILTER INPUT BY f2 IS NOT NULL; 
DUMP INPUT; 

はありがとうございました。

+0

ありがとうございます!出来た – Sri

0

あなたはそれはあなたが持っているタブ

A = LOAD '/results' USING PigStorage('\t') as (f1:int, f2:chararray); 
DUMP A; 
関連する問題