Hadoop 3和spark.sql:与HiveWarehouseSession和spark.sql一起使用

时间:2019-08-29 21:21:36

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

以前,我可以完全在spark.sql api中工作以与配置单元表和spark数据帧进行交互。我可以使用相同的API查询通过spark或hive表注册的视图。

我想确认一下,hadoop 3.1和pyspark 2.3.2不再可能吗?要对配置单元表执行任何操作,必须使用“ HiveWarehouseSession” API,而不是spark.sql api。有什么方法可以继续使用spark.sql api并与hive交互,还是我必须重构所有代码?

hive = HiveWarehouseSession.session(spark).build()
hive.execute("arbitrary example query here")
spark.sql("arbitrary example query here")

这令人困惑,因为spark documentation

  

以相同的方式连接到任何数据源

并特别以Hive为例,但随后Hortonworks hadoop 3 documentation

  

作为Spark开发人员,您可以使用JDBC风格的HiveWarehouseSession API对Hive执行查询

这两个陈述是直接矛盾的。

Hadoop文档继续:“您可以使用Hive Warehouse Connector(HWC)API从Spark访问Hive目录中的任何类型的表。当您使用SparkSQL时,标准Spark API可以访问Spark目录中的表。

至少到目前为止,Spark.sql spark不再是通用的吗?我不再可以使用相同的API与配置单元表无缝交互?

1 个答案:

答案 0 :(得分:0)

是的,正确。我正在使用Spark 2.3.2,但无法再使用Spark SQL默认API访问配置单元表。 从HDP 3.0开始,Apache Hive和Apache Spark的目录是分开的,它们是互斥的。 如前所述,您必须使用pyspark-llap库中的HiveWarehouseSession。