2016-05-13 11 views
0

が含まれているCSVファイルをロードするとき、私はサンプルデータのようになりますcsvファイルを持っている...
名、JOB、給与
---- ---------------------
Jack、IT、$ 12,00
------------------ -------
ジョン、HR、$ 24,00
--------------------------
Hadoopの豚「ロード」問題valueフィールドにカンマや特殊文字

ときこのコマンドを使用してこのデータを読み込みます。
A = LOAD '/USER/XYZ/PIG/FILENAME.CSV' USING PIGSTORAGE(',') as (NAME:chararray,JOB:chararray, Salary:chararray) ;

「$ 12,00」のコンマは区切り文字とみなされ、$ 12のみが読み込まれます。 これに対応する回避策はありますか? それは整数( '$' をあまりにもサイン無視して)として給与フィールドをロードすることが可能である。..

+0

したがって、区切り文字は "|"です。どうしてあなたは "|"デリミタとして。 –

+0

まあ、表現目的のために..私は質問の構造のようなテーブルを追加しました。実際はカンマが区切り文字です。 –

答えて

0

以下の手順に従ってください:PigStorageの使用を使用しての

  1. Isntead、org.apache.pig.piggybank.storage.CSVExcelStorage()

  2. chararrayの代わりに、floatという給与のデータ型を指定します。

0

"|" $記号はREPLACEコマンドを使用してフィールドをintにキャストします

A = LOAD '/USER/XYZ/PIG/FILENAME.CSV' USING PIGSTORAGE('|') as (NAME:chararray,JOB:chararray, Salary:chararray) ; 
A1 = FOREACH A GENERATE NAME,JOB,(int)REPLACE(Salary,'([^a-zA-Z0-9.,\\s]+)',''); 
関連する問題