繁体   English   中英

从 HDinsight 集群访问 Hive 表

[英]Access Hive table from HDinsight cluster

我正在使用 pyspark 访问我的 HDinsight 集群内的 hive。 当我 go 并查询 hive 时,它显示了所有数据库,但是当我从 spark 查询时,它只显示默认数据库。

我相信它只是 go 并且默认查询 spark 目录。

我发现的解决方法是我应该使用 Hive 仓库连接器从 spark 连接到 hive。

还有其他方法吗?

代码

spark = SparkSession \
    .builder \
    .appName("Python Spark SQL Hive integration example") \
    .config("hive.metastore.uris", "thrift://hn0-mytestua.abc.dxbx.internal.cloudapp.net:9083") \
    .config("spark.sql.warehouse.dir", '/hive/warehouse/external') \
    .enableHiveSupport() \
    .getOrCreate()
spark.sql("show databases").show()

如果您不想在 spark 代码中指定 hive 相关配置,那么您可以简单地将 hive-site.xml 文件从 $HIVE_HOME/conf 文件夹复制到 $SPARK_HOME/conf 文件夹。

如果无法进行文件复制,则可以在创建SparkSession或启动 spark 作业以连接到 hive 时使用以下配置。

spark.sql.hive.metastore.jars = $HIVE_HOME/lib/* // No need to specify this if it's already in CLASSPATH
spark.hadoop.hive.metastore.uris = thrift://<host>:9083
spark.sql.hive.metastore.version= <hive version> 

如果您的hive版本与文档中此处指定的默认版本匹配,则无需指定 Metastore 版本。

Azure HDInsight 提供HWC连接器将hive 与spark 集成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM