hivecontext与spark sql

hmmo2u0o  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(296)

我试着比较sparksql和hive上下文,我能知道有什么区别吗,hivecontext sql使用hive查询,而sparksql使用spark查询?
下面是我的代码:

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

而sparksql:

spark.sql('select * from table')

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

slmsl1lt

slmsl1lt1#

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函数。因此,您将能够访问配置单元表,因为spark会话是使用hivesupport初始化的。
因此,“sqlcontext.sql”和“spark.sql”之间没有区别,但是建议使用“spark.sql”,因为spark是所有spark api的单一入口点。

相关问题