德鲁伊批量索引inputSpec类型粒度,错误“作业中没有指定输入路径”

时间:2017-03-24 17:07:13

标签: hadoop indexing batch-processing druid granularity

我按照此处写的说明进行操作:http://druid.io/docs/0.9.2/ingestion/batch-ingestion.html(滚动到“InputSpec规范”,查找“粒度”)。

我参与了我的索引任务JSON:

"inputSpec": {
  "type": "granularity",
  "dataGranularity": "DAY",
  "inputPath": "hdfs://hadoop:9000/druid/events/interview",
  "filePattern": ".*",
  "pathFormat": "'y'=yyyy/'m'=MM/'d'=dd"
} 

我已经在HDFS中组织了这样的文件(我是故意这样做的,以为我会在索引任务中使用“粒度”类型):

enter image description here

我一直收到此错误(索引失败):

Caused by: java.io.IOException: No input paths specified in job
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.listStatus(FileInputFormat.java:231) ~[?:?]
    at org.apache.hadoop.mapreduce.lib.input.FileInputFormat.getSplits(FileInputFormat.java:340) ~[?:?]
    at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:493) ~[?:?]
    at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:510) ~[?:?]
    at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:394) ~[?:?]
    at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1285) ~[?:?] 
用谷歌搜索,有两页谈论同样的问题:

两者都提到将“filePattern”的值设置为“。*”。那样做,没有运气。

为了确认我的Druid-Hadoop链接有效,我尝试将inputSpec更改为static:

"inputSpec": {
  "type": "static",
  "paths": "hdfs://hadoop:9000/druid/events/interview/y=2016/m=11/d=06/event.json,hdfs://hadoop:9000/druid/events/interview/y=2016/m=11/d=07/event.json"
}

有效。所以,我的德鲁伊和Hadoop没问题。

这种“粒度”输入规格是否在德鲁伊中被打破(我使用的是0.9.2)?因为我在inputSpec中没有看到任何错误(粒度类型为1);至少不是根据我读过的文档和论坛。

与此同时,我可以使用静态字符串(并构建我的冗长路径字符串),但“粒度”类型是理想的(如果只有它工作)。

有人能在这里说清楚吗?

感谢。

1 个答案:

答案 0 :(得分:0)

尝试在路径模式的末尾添加/: “pathFormat”:“'y'= yyyy /'m'= MM /'d'= dd /”