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

a8jjtwal  于 2021-06-25  发布在  Pig
关注(0)|答案(2)|浏览(422)

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

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"
pxiryf3j

pxiryf3j1#

可以用模式文件加载数据。
当您使用 '-schema' 标志,在输出路径中,有 .pig-schema 包含模式的json的文件。
您可以在加载数据时使用它

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

您可以通过运行

describe A;

查看这篇好文章了解更多细节。
此功能从pig 0.10开始提供。

pokxtpni

pokxtpni2#

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选项,也会生成此文件。

相关问题