16

テキスト ファイルがあり、その最初の行にヘッダーが含まれています。今、データに対して何らかの操作を行いたいのですが、PigStorage を使用してファイルをロードしている間、HEADER も必要です。HEADERをスキップしたいだけです。(直接または UDF を介して) そうすることは可能ですか?

これは、データをロードするために使用しているコマンドです。

input_file = load '/home/hadoop/smdb_tracedata.csv'
USING PigStorage(',')
as (trans:chararray, carrier:chararray,aainday:chararray);
4

5 に答える 5

10

通常、この問題を解決する方法は、ヘッダーにあることがわかっているものに FILTER を使用することです。たとえば、次のデータ例を考えてみましょう。

STATE,NAME
MD,Bob
VA,Larry

やります:

B = FILTER A BY state != 'STATE';
于 2013-10-01T15:20:11.750 に答える
9

ブタのバージョン 0.11 をお持ちの場合は、これを試すことができます。

input_file = load '/home/hadoop/smdb_tracedata.csv' USING PigStorage(',') as (trans:chararray, carrier :chararray,aainday:chararray);

ranked = rank input_file;

NoHeader = Filter ranked by (rank_input_file > 1);

Ordered = Order NoHeader by rank_input_file

New_input_file = foreach Ordered Generate trans, carrier, aainday;

これにより、最初の行が削除され、New_input_file はヘッダー行なしで元のファイルとまったく同じになります (ヘッダー行がファイルの最初の行であると仮定します)。ランク演算子は pig 0.11 でのみ使用できることに注意してください。そのため、以前のバージョンを使用している場合は、別の方法を見つける必要があります。

編集: New_input_file が元の入力ファイルと同じ順序を維持するように、順序付きの行を追加しました

于 2013-10-01T12:42:26.130 に答える
-1

この種のエラーは通常、互換性のないデータ型を変換しようとしたときに発生します。同様の問題と理由に直面しました->ロードしようとしているファイルにはヘッダーが含まれており、エラーが表示されています。他の考えられる理由は、列にNAの、スペースが存在することによる可能性があります

于 2016-03-26T05:55:13.600 に答える