如何在 Pig 中使用标题(第一行)作为字段名称
Posted
技术标签:
【中文标题】如何在 Pig 中使用标题(第一行)作为字段名称【英文标题】:how to use header(first row) as field names in 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
【问题讨论】:
【参考方案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 文件吗?以上是关于如何在 Pig 中使用标题(第一行)作为字段名称的主要内容,如果未能解决你的问题,请参考以下文章