2013-11-24 8 views
5

データファイルと対応するスキーマファイルを別々の場所に格納しています。 スキーマファイル内のスキーマを使用してデータをロードしたいとします。お試しください。Pig:外部スキーマファイルを使用してデータファイルをロードする

A= LOAD '<file path>' USING PigStorage('\u0001') as '<schema-file path>' 

エラーが発生します。

ファイルを正しく読み込むための構文は何ですか?

data1 - complex - - - - format - - 
data1 event_type - - - - - long - "ends '\001'" 
data1 event_id - - - - - varchar(50) - "ends '\001'" 
data1 name_format - - - - - varchar(10) - "ends newline" 

答えて

6

AS句スキーマファイルへのパスを直接スキーマを指定しないためである。

スキーマファイル形式は、のようなものがあります。

A = LOAD '<file path>' USING PigStorage('\u0001') as 'type: long, id:chararray, nameformat:chararray'; 

また、スキーマを含む.pig_schemaを命名して、入力されたディレクトリにあるファイルも同様に仕事ができます。しかし、それを試みたことはありません。 PigStorageで保存するときに、あなたが-schemaオプションを指定した場合、このファイルも生成され

{"fields":[ 
     {"name":"type","type":55,"description":"Fu","schema":null}, 
     {"name":"id","type":15,"description":"Bar","schema":null}, 
     {"name":"nameFormat","type":55,"description":"Xu","schema":null}, 
    ] ,"version":0,"sortKeys":[],"sortKeyOrders":[]} 

:それは、次の構文を使用してJSONファイルでなければなりません。

7

スキーマファイルでデータを読み込むことは可能です。

'-schema'フラグを指定してデータを保存すると、出力パスにスキーマを持つjsonを保持するファイル.pig-schemaが存在します。

あなたはデータ

B = LOAD '<>' USING PigStorage(',','-schema'); 

をロードするときに、より多くの詳細については、

describe A; 

チェックthis good postを実行して、スキーマを見ることができ、それを使用することができます。

この機能は、豚0.10から使用できます。

関連する問題