可以从不同的SparkSession访问DataFrame吗?

时间:2017-04-19 18:46:21

标签: apache-spark dataframe apache-spark-sql

我可以从不同的DataFrame s访问SparkSession吗?

3 个答案:

答案 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的会话。