HiveContext vs Spark SQL

时间:2018-08-21 02:24:07

标签: python hive apache-spark-sql

我正在尝试比较spark sql与hive上下文,我可能知道有什么区别,hivecontext sql是使用hive查询,而spark sql是使用spark查询吗?

下面是我的代码:

sc = pyspark.SparkContext(conf=conf).getOrCreate()
sqlContext = HiveContext(sc)
sqlContext.sql ('select * from table')

而sparksql:

spark.sql('select * from table')

我能知道这两者的区别吗?

1 个答案:

答案 0 :(得分:4)

SparkSession提供了与底层Spark功能交互的单个入口,并允许使用DataFrame和Dataset API编程Spark。最重要的是,它抑制了概念的数量,并构造了开发人员在与Spark交互时必须处理的问题。

SparkSession无需显式创建SparkConf,SparkContext或SQLContext,而是将它们封装在其内部。

SparkSession已将SQLContext和HiveContext合并到Spark 2.0+中的一个对象中。

在构建会话对象时,例如:

val spark = SparkSession .builder() .appName("SparkSessionExample").config( "spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()

.enableHiveSupport()提供HiveContext函数。因此,由于使用HiveSupport初始化了spark会话,因此您将能够访问Hive表。

因此,“ sqlContext.sql”和“ spark.sql”之间没有区别,但是建议使用“ spark.sql”,因为spark是所有Spark API的单入口。