spark.sql 与 SqlContext
spark.sql vs SqlContext
我在Spark中使用过SQL,在这个例子中:
results = spark.sql("select * from ventas")
其中 ventas 是一个数据框,之前的分类类似于 table:
df.createOrReplaceTempView('ventas')
但我已经看到在 Spark 中使用 SQL 的其他方法,使用 class SqlContext:
df = sqlContext.sql("SELECT * FROM table")
两者有什么区别?
提前致谢
从用户(而非贡献者)的角度来看,我只能重复开发人员在升级说明中提供的内容:
Upgrading From Spark SQL 1.6 to 2.0
- SparkSession is now the new entry point of Spark that replaces the old SQLContext and HiveContext. Note that the old SQLContext and HiveContext are kept for backward compatibility. A new catalog interface is accessible from SparkSession - existing API on databases and tables access such as listTables, createExternalTable, dropTempView, cacheTable are moved here.
在 2.0 之前,SqlContext
需要额外调用创建它的工厂。使用 SparkSession
,他们让事情变得更加方便。
如果您查看源代码,您会注意到 SqlContext
class 大部分标记为 @deprecated
。仔细检查表明,最常用的方法只是调用 sparkSession
.
有关详细信息,请查看开发人员说明、Jira 问题、关于 spark 2.0 的会议演讲和 Databricks 博客。
Sparksession 是现在使用 Spark 对象的首选方式。 Hivecontext 和 SQLContext 都可以作为这个单一对象 SparkSession 的一部分使用。
您正在通过创建视图使用最新的语法 df.createOrReplaceTempView('ventas')。
接下来将 df1 创建为 javaobject
df1=sqlcontext.sql("select col1,col2,col3 from table")
接下来创建 df2 作为 DATAFRAME
df2=spark.sql("select col1,col2,col3 from table")
使用 type(df2)
和 type(df1)
检查差异
在 Spark 2.x 之前,SQLContext 是在 SparkContext 的帮助下构建的,但在 Spark 2.x 引入了具有 HiveContext 和 SQLContect 功能的 SparkSession 之后 both.So 无需单独创建 SQLContext。
**before Spark2.x**
sCont = SparkContext()
sqlCont = SQLContext(sCont)
**after Spark 2.x:**
spark = SparkSession()
我在Spark中使用过SQL,在这个例子中:
results = spark.sql("select * from ventas")
其中 ventas 是一个数据框,之前的分类类似于 table:
df.createOrReplaceTempView('ventas')
但我已经看到在 Spark 中使用 SQL 的其他方法,使用 class SqlContext:
df = sqlContext.sql("SELECT * FROM table")
两者有什么区别?
提前致谢
从用户(而非贡献者)的角度来看,我只能重复开发人员在升级说明中提供的内容:
Upgrading From Spark SQL 1.6 to 2.0
- SparkSession is now the new entry point of Spark that replaces the old SQLContext and HiveContext. Note that the old SQLContext and HiveContext are kept for backward compatibility. A new catalog interface is accessible from SparkSession - existing API on databases and tables access such as listTables, createExternalTable, dropTempView, cacheTable are moved here.
在 2.0 之前,SqlContext
需要额外调用创建它的工厂。使用 SparkSession
,他们让事情变得更加方便。
如果您查看源代码,您会注意到 SqlContext
class 大部分标记为 @deprecated
。仔细检查表明,最常用的方法只是调用 sparkSession
.
有关详细信息,请查看开发人员说明、Jira 问题、关于 spark 2.0 的会议演讲和 Databricks 博客。
Sparksession 是现在使用 Spark 对象的首选方式。 Hivecontext 和 SQLContext 都可以作为这个单一对象 SparkSession 的一部分使用。
您正在通过创建视图使用最新的语法 df.createOrReplaceTempView('ventas')。
接下来将 df1 创建为 javaobject
df1=sqlcontext.sql("select col1,col2,col3 from table")
接下来创建 df2 作为 DATAFRAME
df2=spark.sql("select col1,col2,col3 from table")
使用 type(df2)
和 type(df1)
在 Spark 2.x 之前,SQLContext 是在 SparkContext 的帮助下构建的,但在 Spark 2.x 引入了具有 HiveContext 和 SQLContect 功能的 SparkSession 之后 both.So 无需单独创建 SQLContext。
**before Spark2.x**
sCont = SparkContext()
sqlCont = SQLContext(sCont)
**after Spark 2.x:**
spark = SparkSession()