我有一个数据文件和一个存储在不同位置的相应模式文件。 我想使用模式文件中的模式加载数据。我尝试使用
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"
答案 0 :(得分:7)
可以使用模式文件加载数据。
使用'-schema'
标志存储数据时,在输出路径中,有.pig-schema
文件用于保存包含模式的json。
您可以在加载数据时使用它
B = LOAD '<>' USING PigStorage(',','-schema');
您可以通过运行
来查看架构describe A;
查看this good post了解详情。
此功能从Pig 0.10开始可用。
答案 1 :(得分:6)
AS子句用于直接指定架构而不是架构文件的路径。
A = LOAD '<file path>' USING PigStorage('\u0001') as 'type: long, id:chararray, nameformat:chararray';
或者,包含架构并位于输入目录中的名为.pig_schema
的文件也可以正常工作。从来没有尝试过。它必须是具有以下语法的JSON文件:
{"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":[]}
如果在使用PigStorage存储时指定-schema选项,也会生成此文件。