从HDinsight集群访问Hive表



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

我相信它只是去查询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。

相关内容

  • 没有找到相关文章

最新更新