我按照这里写的说明:http://druid.io/docs/0.9.2/ingestion/batch-ingestion.html(滚动到"InputSpec specification",查找"granularity") .
我有我的索引任务JSON:
"inputSpec": {
"type": "granularity",
"dataGranularity": "DAY",
"inputPath": "hdfs://hadoop:9000/druid/events/interview",
"filePattern": ".*",
"pathFormat": "'y'=yyyy/'m'=MM/'d'=dd"
}
我已经将我的文件组织在这样的HDFS中(我是故意这样做的,以为我会在我的索引任务中使用“粒度”类型):
我一直收到这个错误(索引失败):
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) ~[?:?]
谷歌搜索它,有两页谈论同样的问题:
-
https://groups.google.com/forum/#!topic/druid-user/xKYgGv983ZQ
-
https://groups.google.com/forum/#!topic/druid-user/B2YxNQ8UQR4
两者都提到将“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 回答
尝试在路径模式的末尾添加一个/:“pathFormat”:“'y'= yyyy /'m'= MM /'d'= dd /”