HiveContext 与 Spark sql

2 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')
Run Code Online (Sandbox Code Playgroud)

而sparksql:

spark.sql('select * from table')
Run Code Online (Sandbox Code Playgroud)

我可以知道这两者的区别吗?

Lak*_*ini 6

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()
Run Code Online (Sandbox Code Playgroud)

.enableHiveSupport() 提供 HiveContext 函数。因此您将能够访问 Hive 表,因为 Spark 会话是使用 HiveSupport 初始化的。

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