【问题标题】:Unable to connect to Hive from pyspark with anonymous user error无法通过匿名用户错误从 pyspark 连接到 Hive
【发布时间】:2023-02-03 14:05:25
【问题描述】:

我已经研究了如何从蜂巢连接火花,但仍然无法弄清楚 -

这是示例代码 -

spark = SparkSession.builder \
  .appName("My Spark Application") \
  .config("spark.hadoop.hive.server2.jdbc.url", "jdbc:hive2://localhost:10000/default?**user=hive**") \
  .enableHiveSupport() \
  .getOrCreate()

from pyspark_llap.sql.session import HiveWarehouseSession
hive = HiveWarehouseSession.session(spark).build()  

hive.execute("show tables")

错误是 -

Caused by: org.apache.hadoop.hive.ql.security.authorization.plugin.HiveAccessControlException: Permission denied: user [anonymous] does not have [USE] privile
ge on [default]

不管我尝试什么,我都无法摆脱匿名用户。从文档中建议按照我在上面的代码中传递的方式在配置单元 URL 中传递用户名,但仍然显示用户匿名

【问题讨论】:

    标签: apache-spark pyspark hive


    【解决方案1】:

    来自一些Cloudera docs

    Hive 连接字符串必须包含用户名和密码;否则,Spark 和 Hive 无法连接。例如:

    jdbc:hive2://<host>:2181;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-interactive;user=<user name>;password=<password>

    似乎您可能没有在连接字符串中使用正确的定界符。尝试使用 ; 而不是 ?。所以在你的情况下,它将是:"jdbc:hive2://localhost:10000/default;user=hive"

    【讨论】:

    • 谢谢,我也通过传递密码解决了这个问题。当我更改分隔符时,它给出了相同的错误,但在传递密码后它起作用了,感谢您的帮助
    猜你喜欢
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 2015-05-29
    相关资源
    最近更新 更多