gpt4 book ai didi

csv - 使用PigStorage加载数据,缺少最后一个字段

转载 作者:行者123 更新时间:2023-12-02 21:41:59 24 4
gpt4 key购买 nike

我在Hadoop上使用Pig来分析CSV格式的日志。有时,我的数据提供者会在日志中添加新字段,所有新字段都添加在每一行的末尾。

我想知道,当通配符模式与“旧格式”和“新格式”文件都匹配时,可以正确实现这些CSV文件的加载,同时仍然能够访问最新文件上的新字段。

让我们举一个实际的例子:

2014/12/20/log_2014-12-20.csv:
f1, f2, f3

2014/12/21/log_2014-12-21.csv:
f1, f2, f3

2014/12/22/log_2014-12-22.csv:
f1, f2, f3

2014/12/23/log_2014-12-23.csv:
f1, f2, f3, f4, f5

2014/12/24/log_2014-12-24.csv:
f1, f2, f3, f4, f5

请注意,从2014年12月23日开始出现了新字段:f4和f5。

当使用以下Pig语句时,2014-12-23之前的文件中的数据将不会加载,因此Pig别名 MYDATA中只有2014-12-23开始的数据可用:
MYDATA = LOAD 's3://mybucket/logs/2014/12' using PigStorage(',') as (
f1: int,
f2: int,
f3: int,
f4: int,
f5: int
);

如果要从所有预期的时间范围内加载数据,则需要省略以下新字段:
MYDATA = LOAD 's3://mybucket/logs/2014/12' using PigStorage(',') as (
f1: int,
f2: int,
f3: int
);

但是我无法利用最新数据上的新字段。就像在我的实际用例中一样,以上语句存储在Pig宏中,供多个脚本使用的日志数据,在宏中添加新字段破坏了我的脚本,这些脚本正在加载不太近期的数据。

您对处理这种数据方案更改有何建议?

谢谢你的帮助。

最佳答案

我在使用Parquet(http://parquet.incubator.apache.org/)方面取得了良好的经验。他们还提供Pig储存器和装载器。加载程序允许您指定要读取数据的特定架构,该架构将使用NULL(某种形式的架构演化简单形式)填充数据中不可用的字段。在您的情况下,您需要先将数据转换为Parquet格式,但随后它应能按预期工作。

关于csv - 使用PigStorage加载数据,缺少最后一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28070514/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com