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的主要内容,如果未能解决你的问题,请参考以下文章
Apache Spark SQLContext 与 HiveContext 有啥区别?