是否可以从不同的SparkSession访问DataFrame?

9q78igpj  于 2022-11-16  发布在  Apache
关注(0)|答案(3)|浏览(122)

是否可以从不同的SparkSession访问DataFrame

mqkwyuun

mqkwyuun1#

tl;dr否,无法在SparkSessions之间共享DataFrame。

一个DataFrame存在于一个SparkSession中(就像RDDSparkContext中一样),SparkSession成为DataFrame的一个组成部分,你可以在Dataset类型构造函数的定义中看到:

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
9gm1akwq

9gm1akwq2#

您可以随时写出希望再次使用的 Dataframe ,然后在下次读取它。

pdtvr36n

pdtvr36n3#

使用Global_temp_view &,因为它是会话作用域,不要终止创建DataFrame时使用的会话。

相关问题