【问题标题】:Hive - Why SLF4J: Class path contains multiple SLF4J bindings appears when I change output pathHive - 为什么 SLF4J:当我更改输出路径时出现类路径包含多个 SLF4J 绑定
【发布时间】:2018-02-19 11:19:00
【问题描述】:

我需要将查询结果存储在工作流的工作区中。为此,我使用了:

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;

【问题讨论】:

    标签: hadoop hive


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    -拉维

    【讨论】:

    • 您好,感谢您的回答。但是目录 /apps/myProject/conf/oozie/workspaces/myWorkflow 是工作流的工作区。我希望它有权在自己的工作区中写入。您知道我如何授予工作流在其自己的工作区中写入的权限吗?我还想补充一点,我是工作流的创建者和提交者
    • 您好,您能否为使用 chgrp 的组提供写入权限,并将工作流用户添加到目录的组中。您可以看到组 ls -l
    猜你喜欢
    • 2012-12-11
    • 2016-03-12
    • 2014-05-18
    • 1970-01-01
    • 2021-05-19
    • 2020-07-07
    • 2012-09-11
    • 2018-12-12
    相关资源
    最近更新 更多