我可以从不同的DataFrame
s访问SparkSession
吗?
答案 0 :(得分:2)
tl; dr 不,不能在SparkSessions
之间共享数据框。
DataFrame
只有一个SparkSession
(就像RDD
中的SparkContext
),它定义了其可见范围。拥有SparkSession
成为DataFrame
的一个组成部分,您可以在Dataset
type constructor的定义中看到:
class Dataset[T] private[sql](
@transient val sparkSession: SparkSession, // <-- here
@DeveloperApi @InterfaceStability.Unstable @transient val queryExecution: QueryExecution,
encoder: Encoder[T])
extends Serializable {
您可以使用SparkSession
属性访问所属的DataFrame
sparkSession
:
scala> val df = Seq(1,2,3).toDF("id")
df: org.apache.spark.sql.DataFrame = [id: int]
scala> df.sparkSession
res0: org.apache.spark.sql.SparkSession = org.apache.spark.sql.SparkSession@4832813d
scala> df.sparkSession == spark
res1: Boolean = true
答案 1 :(得分:0)
您可以随时写出要再次使用的数据帧,然后在下次阅读。
答案 2 :(得分:-2)
使用Global_temp_view&amp;因为它是会话范围的,所以不要终止用于创建DataFrame的会话。