【问题标题】:How to setup connection to HIVE using PySpark and SparkSession (How do I add username and password)?如何使用 PySpark 和 SparkSession 设置与 HIVE 的连接(如何添加用户名和密码)?
【发布时间】:2021-11-25 20:50:12
【问题描述】:

我一直在尝试使用PySpark 访问 Hive 中的表,在阅读了其他一些帖子之后,这是人们推荐的连接 Hive 的方式。但它不起作用。然后我意识到我可能必须传递我的用户名和密码,但我不明白该怎么做。那么有没有办法在设置SparkSession的时候传递用户名和pw,不然还有什么问题呢?

import sys
from pyspark import SparkContext, SparkConf, HiveContext
from pyspark.sql import SparkSession

if __name__ == "__main__":

# create Spark context with Spark configuration
spark = SparkSession.builder()
      .appName("interfacing spark sql to hive metastore without configuration file")
      .config("hive.metastore.uris", "thrift://my_server:10000")
      .enableHiveSupport()
      .getOrCreate()
sc = spark.sparkContext
df = sc.parallelize([(1, 2, 3, 'a b c'),(4, 5, 6, 'd e f'),(7, 8, 9, 'g h i')]).toDF(['col1', 'col2', 'col3','col4'])
df.write.mode("overwrite").saveAsTable("test_spark")

追溯

Exception in thread "main" org.apache.spark.SparkException: Application application_1575789516697_258641 finished with failed status
    at org.apache.spark.deploy.yarn.Client.run(Client.scala:1122)
    at org.apache.spark.deploy.yarn.Client$.main(Client.scala:1168)
    at org.apache.spark.deploy.yarn.Client.main(Client.scala)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:780)
    at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:180)
    at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:205)
    at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:119)
    at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)

【问题讨论】:

    标签: python apache-spark pyspark hive apache-spark-sql


    【解决方案1】:

    尝试在下面添加配置

    .config("spark.sql.warehouse.dir", your_warehouse_location)
    

    使用this 作为参考。

    【讨论】:

      【解决方案2】:

      Spark 直接连接到 Hive。无需传递用户名和密码,提交spark申请时传递hive-site.xml即可。

      使用下面的代码,

       from pyspark.sql import SparkSession
      
         sparkSession = SparkSession.builder.appName("ApplicationName").enableHiveSupport().getOrCreate()
         
      
      

      在提交您的应用程序时,传递 hive-site.xml 文件, 作为,

      spark-submit --files /<location>/hive-site.xml --py-files <List_of_Pyfiles> 
      
      

      【讨论】:

        猜你喜欢
        • 2018-02-07
        • 1970-01-01
        • 1970-01-01
        • 2018-05-08
        • 2012-03-14
        • 2020-12-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多