【问题标题】:Pig: loading a data file using an external schema filePig:使用外部模式文件加载数据文件
【发布时间】:2023-03-24 16:24:01
【问题描述】:

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

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"

【问题讨论】:

    标签: load schema gruntjs apache-pig


    【解决方案1】:

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

    当您使用 '-schema' 标志存储数据时,在输出路径中,有一个 .pig-schema 文件,其中包含带有架构的 json。

    加载数据时可以使用

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

    你可以通过运行查看架构

    describe A;
    

    查看this good post了解更多详情。

    此功能从 Pig 0.10 开始可用。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多