Spark Sql registerTempTable和registerDataFrameAsTable的区别

时间:2015-07-24 04:48:48

标签: apache-spark apache-spark-sql

Spark SQL中registerTempTableregisterDataFrameAsTable方法的区别是什么,哪种情况更好。

1 个答案:

答案 0 :(得分:9)

Spark> = 2.1

有一个新的createGlobalTempView可用于注册跨会话视图:

  

它的生命周期是Spark应用程序的生命周期,即它将在应用程序终止时自动删除。它与系统保留的数据库<p>绑定,我们必须使用限定名称来引用全局临时视图,例如_global_temp

Spark&gt; = 2.0

SELECT * FROM _global_temp.view1已被弃用,有利于createTempViewcreateOrReplaceTempView,如果视图已经存在则前者抛出异常。

Spark&lt; 2.0

PySpark

虽然这两者之间没有实际差异,但执行策略存在差异:

  • registerTempTable在JVM SQL上下文中调用SQLContext.registerDataFrameAsTable方法
  • registerDataFrameAsTable在JVM数据框上调用DataFrame.registerTempTable,在JVM SQL上下文中调用registerTempTable方法

Scala的

  • registerDataFrameAsTable在SQL上下文中调用DataFrame.registerTempTable方法
  • registerDataFrameAsTable是无法在SQLContext.registerDataFrameAsTable包之外访问的私有方法。

为了简单起见,坚持org.apache.spark.sql也许是个好主意。