Hive - 为什么SLF4J:当我更改输出路径时,类路径包含多个SLF4J绑定

时间:2018-02-19 11:19:00

标签: hadoop hive

我需要在工作流的工作区中存储查询结果。为实现这一点,我使用了:

INSERT OVERWRITE LOCAL DIRECTORY '/apps/myProject/conf/oozie/workspaces/myWorkflow' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','  
LINES TERMINATED BY "\n"
SELECT * FROM myTable
LIMIT 10;

但我收到错误:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/opt/cloudera/parcels/CDH-5.8.5-1.cdh5.8.5.p0.5/jars/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/data/12/yarn/nm/filecache/294953/slf4j-log4j12-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]

我在其他问题link1link2中找到的解决方案是删除库,但问题是我没有权限这样做。还有另外一种方法吗?

我还想提一下,如果我设置以下路径没有问题

INSERT OVERWRITE LOCAL DIRECTORY 'tmp/user/output' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','  
LINES TERMINATED BY "\n"
SELECT * FROM myTable
LIMIT 10;

1 个答案:

答案 0 :(得分:1)

工作流用户(hadoop)在/ apps / myProject / conf / oozie / workspaces / myWorkflow目录中没有写访问权限。默认情况下,用户在/ tmp目录中具有写访问权限,因此它正在工作。您能否检查工作流程执行用户的访问权限。

SLF4J只是警告信息,不会停止工作流程执行。

要确认这一点,请为hadoop用户创建一个目录并尝试。

希望这有帮助。

-Ravi