Spark SQL中registerTempTable
和registerDataFrameAsTable
方法的区别是什么,哪种情况更好。
答案 0 :(得分:9)
有一个新的createGlobalTempView
可用于注册跨会话视图:
它的生命周期是Spark应用程序的生命周期,即它将在应用程序终止时自动删除。它与系统保留的数据库
<p>
绑定,我们必须使用限定名称来引用全局临时视图,例如_global_temp
。
SELECT * FROM _global_temp.view1
已被弃用,有利于createTempView
和createOrReplaceTempView
,如果视图已经存在则前者抛出异常。
虽然这两者之间没有实际差异,但执行策略存在差异:
registerTempTable
在JVM SQL上下文中调用SQLContext.registerDataFrameAsTable
方法registerDataFrameAsTable
在JVM数据框上调用DataFrame.registerTempTable
,在JVM SQL上下文中调用registerTempTable
方法registerDataFrameAsTable
在SQL上下文中调用DataFrame.registerTempTable
方法registerDataFrameAsTable
是无法在SQLContext.registerDataFrameAsTable
包之外访问的私有方法。为了简单起见,坚持org.apache.spark.sql
也许是个好主意。