尝试在spark里使用加载hanlp.properties的方式加载hdfs里存放的模型和自定义词库,尝试了两种方式:
Predefine.HANLP_PROPERTIES_PATH = "hdfs://nameservice1/user/alg/hanlp/hanlp.properties"这种
HanLP.Config.IOAdapter = new HadoopFileIOAdapter("hdfs://nameservice1/user/alg/hanlp/")
但是两种方式好像并没有生效,报错提示可以看出HanLP.Config还是加载了默认路径(data/model/perceptron/large/cws.bin)下的模型。
希望Container大佬们可以改进一下,HanLP.Config的配置方式,Predefine.HANLP_PROPERTIES_PATH好像并不支持读取hdfs的文件路径,读取失败会自动加载默认路径的模型,原因在源代码中找到,应该是这个地方
try {
p.load(new InputStreamReader((InputStream)(Predefine.HANLP_PROPERTIES_PATH == null ? loader.getResourceAsStream("hanlp.properties") : new FileInputStream(Predefine.HANLP_PROPERTIES_PATH)), "UTF-8"));
} catch (Exception var13) {
HANLP_ROOT = System.getProperty("HANLP_ROOT");
if (HANLP_ROOT == null) {
HANLP_ROOT = System.getenv("HANLP_ROOT");
}
if (HANLP_ROOT == null) {
throw var13;
}
HANLP_ROOT = HANLP_ROOT.trim();
p = new Properties();
p.setProperty("root", HANLP_ROOT);
Predefine.logger.info("使用环境变量 HANLP_ROOT=" + HANLP_ROOT);
}