Pig:使用外部模式文件加载数据文件

Sha*_*arg 5 schema load apache-pig gruntjs

我有一个数据文件和相应的模式文件存储在不同的位置.我想使用模式文件中的模式加载数据.我试过用

A= LOAD '<file path>' USING PigStorage('\u0001') as '<schema-file path>' 
Run Code Online (Sandbox Code Playgroud)

但得到一个错误.

正确加载文件的语法是什么?

模式文件格式如下:

data1 - complex - - - - format - -
data1 event_type - - - - - long - "ends '\001'"
data1 event_id - - - - - varchar(50) - "ends '\001'"
data1 name_format - - - - - varchar(10) - "ends newline"
Run Code Online (Sandbox Code Playgroud)

Mzf*_*Mzf 7

可以使用模式文件加载数据.

当您使用'-schema'标志存储数据时,在输出路径中,有一个.pig-schema文件用于保存包含模式的json.

您可以在加载数据时使用它

B = LOAD '<>' USING PigStorage(',','-schema'); 
Run Code Online (Sandbox Code Playgroud)

您可以通过运行来查看架构

describe A;
Run Code Online (Sandbox Code Playgroud)

查看这篇好帖子了解更多详情.

从Pig 0.10开始提供此功能.


Fre*_*ric 6

AS子句用于直接指定模式,而不是模式文件的路径.

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

或者,名为.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":[]}
Run Code Online (Sandbox Code Playgroud)

如果在使用PigStorage存储时指定-schema选项,也会生成此文件.