我遵照这里的指示: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用户/xkyggv983zq
https://groups.google.com/forum/#!主题/druid用户/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"
}
它起作用了。所以,我的Druid和hadoop没问题。
这个“粒度”输入规范在druid中被破坏了吗(我使用的是0.9.2)?因为我在inputspec(粒度类型)中没有看到任何错误;至少从我读到的文件和论坛来看不是这样。
同时,我可以使用静态类型(并构建冗长的paths字符串),但是“粒度”类型将是理想的(如果它能工作的话)。
有人能给我点启示吗?
谢谢。
1条答案
按热度按时间h9a6wy2h1#
尝试将/添加到路径模式的末尾:“pathformat”:“'y'=yyyy/'m'=mm/'d'=dd/”