【问题标题】:how to use header(first row) as field names in Pig如何在 Pig 中使用标题(第一行)作为字段名称
【发布时间】:2015-05-01 14:24:16
【问题描述】:

给定一个 csv 文件的第一行可以作为标题,如何使用这些标题在 Pig 中动态加载字段名称?即

id,year,total
1,1999,190
2,1998,20

a = LOAD '/path/to/file.csv' USING PigStorage() AS --use first row as field names
> describe a;
> id:bytearray,year:bytearray,total:bytearray 

【问题讨论】:

    标签: hadoop apache-pig


    【解决方案1】:

    由于这是一个 CSV 文件,并且您想将第一行用作标题,因此您应该使用 CSVLoader() 为它。它将第一行视为标题。你的脚本会是这样的。

    --Register the piggybank jar
    REGISTER piggybank.jar
    define CSVLoader org.apache.pig.piggybank.storage.CSVLoader();  
    
    A = LOAD '/path/to/file.csv' using CSVLoader AS(id:int,year:chararray,total:int);
    

    【讨论】:

    • 谢谢,但是如何使用这些标题在 Pig 中动态加载字段名称?
    • CSVLoader() 总是将第一行作为标题加载。您的负载语句将是这样的。 A = LOAD '/path/to/file.csv' 使用 CSVLoader();但理想情况下,您应该为进一步的操作定义字段的数据类型。
    • 我的意思是猪模式中的字段名称。我不是指跳过标题。我的意思是可以使用从标头生成的模式加载 csv 文件吗?
    猜你喜欢
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多