Csv 使用PigStorage加载缺少最后字段的数据
我使用Hadoop上的Pig来分析CSV格式的日志。有时,我的数据提供者会在日志中添加新字段,所有新字段都会添加到每行的末尾 我想知道的是,当globbing模式匹配“旧格式”和“新格式”文件时,如何正确地实现这些CSV文件的加载,同时仍然能够访问最新文件上的新字段 让我们举一个实际的例子:Csv 使用PigStorage加载缺少最后字段的数据,csv,hadoop,apache-pig,bigdata,Csv,Hadoop,Apache Pig,Bigdata,我使用Hadoop上的Pig来分析CSV格式的日志。有时,我的数据提供者会在日志中添加新字段,所有新字段都会添加到每行的末尾 我想知道的是,当globbing模式匹配“旧格式”和“新格式”文件时,如何正确地实现这些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/lo
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宏中,用于从多个脚本中使用日志数据,在宏中添加新字段会破坏加载的不是最新数据的脚本
您对处理数据方案中的此类变更有何建议
谢谢你的帮助。我在使用拼花地板()方面有很好的经验。它们还提供清管器仓库和装载机。Loader允许指定要读取数据的特定模式,该模式将使用NULL(模式演变的一些简单形式)填充数据中不可用的字段。在您的情况下,您需要首先将数据转换为拼花地板格式,但它应该按照您的预期工作