在hadoop/pig中导入日志的多级目录

Jos*_*all 3 hadoop apache-pig hdfs

我们将日志存储在S3中,我们的一个(Pig)查询将获取三种不同的日志类型.每种日志类型都基于类型/日期的子目录集.例如:

/logs/<type>/<year>/<month>/<day>/<hour>/lots_of_logs_for_this_hour_and_type.log*
Run Code Online (Sandbox Code Playgroud)

我的查询会想要加载所有三种类型的日志,以便给予时间.例如:

type1 = load 's3:/logs/type1/2011/03/08' as ...
type2 = load 's3:/logs/type2/2011/03/08' as ...
type3 = load 's3:/logs/type3/2011/03/08' as ...
result = join type1 ..., type2, etc...
Run Code Online (Sandbox Code Playgroud)

然后我的查询将针对所有这些日志运行.

处理这个问题最有效的方法是什么?

  1. 我们需要使用bash脚本扩展吗?不确定这是否适用于多目录,我怀疑如果要加载10k日志它会有效(甚至可能).
  2. 我们是否创建了一个服务来聚合所有日志并直接将它们推送到hdfs?
  3. 自定义java/python导入程序?
  4. 其他想法?

如果您可以保留一些示例代码(如果适用),那将会有所帮助.

谢谢

Rom*_*ain 5

PigStorage默认支持Globbing,因此您可以尝试:

type1 = load 's3:/logs/type{1,2,3}/2011/03/08' as ..

甚至

type1 = load 's3:/logs/*/2011/03/08' as ..