我正在尝试比较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')
我能知道这两者的区别吗?
答案 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的单入口。