每次我试图将solr配置发送给zookeeper时,下面都会出现异常。
我把这个地址hdfs://some_address/user/peter/dir_with_date".
在bash脚本后面的jars实现中,我看到有一个paths.get方法,它正在将带有configs的字符串转换为不带双斜杠的字符串(“hdfs:/some\ ad…)。
Exception in thread "main" java.io.IOException: Path hdfs:/some_address/user/Peter/dir_with_date does not exist
at org.apache.solr.common.cloud.ZkConfigManager.uploadToZK(ZkConfigManager.java:56)
at org.apache.solr.common.cloud.ZkConfigManager.uploadConfigDir(ZkConfigManager.java:120)
at org.apache.solr.cloud.ZkCLI.main(ZkCLI.java:220)
是我做错了什么,还是这些zkcli不适合从hdfs读取数据?处理这种情况的最佳方法是什么(构建自定义jar)?
2条答案
按热度按时间mgdq6dx11#
如果您查看“zkconfigmanager::uploadtozk()”的代码,请参见:https://github.com/apache/incubator-ranger/blob/master/ranger_solrj/src/main/java/org/apache/solr/common/cloud/zkconfigmanager.java,您可以观察到,异常发生在:
它期待着
Path
成为一个java.nio.file.Path
而不是org.apache.hadoop.fs.Path
(hdfs
路径)。因为,你正在通过一个
hdfs
路径,正在引发异常。您应该传递一个到本地文件系统的路径(即“/some\ u address/user/peter/dir\ u with\ u date”应该是本地文件路径)。
另外,请查看这个wiki,它提供了一个使用zkcli上载配置的示例:https://cwiki.apache.org/confluence/display/solr/using+zookeeper+to+manage+configuration+files
23c0lvtd2#
谢谢你@manjunath,这很有帮助。下面是精确的解决方案:
要通过oozie shell操作将solr配置发送给zookeeper,您必须将solr config dir复制到执行此bash脚本的工作人员,方法是将其添加到工作流中
在bashscript中,您可以这样引用此文件夹:
将configdir作为confdir参数添加到zkcli.sh并完成!
现在你有工作的oozie shell操作,将发送你的solr配置到zookeeper!