HiveContext 与火花 sql

Posted

技术标签:

【中文标题】HiveContext 与火花 sql【英文标题】:HiveContext vs spark sql 【发布时间】:2018-08-21 02:24:07 【问题描述】:

我正在尝试比较 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')

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

【问题讨论】:

What is the difference between Apache Spark SQLContext vs HiveContext?的可能重复 【参考方案1】:

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 函数。因此您将能够访问 Hive 表,因为 spark 会话是使用 HiveSupport 初始化的。

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

【讨论】:

以上是关于HiveContext 与火花 sql的主要内容,如果未能解决你的问题,请参考以下文章

火花 jdbc 读取调整 where 没有主键的表

Apache Spark SQLContext 与 HiveContext 有啥区别?

在 spark 1.6 中计数(不同)不能与 hivecontext 查询一起使用

如何在 Zeppelin 中加载 hiveContext?

在 Spark CLI 中初始化 HiveContext

HiveContext.sql(“插入”)