是否可以从不同的SparkSession访问DataFrame?
SparkSession
DataFrame
mqkwyuun1#
tl;dr否,无法在SparkSessions之间共享DataFrame。
SparkSessions
一个DataFrame存在于一个SparkSession中(就像RDD在SparkContext中一样),SparkSession成为DataFrame的一个组成部分,你可以在Dataset类型构造函数的定义中看到:
RDD
SparkContext
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:
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
9gm1akwq2#
您可以随时写出希望再次使用的 Dataframe ,然后在下次读取它。
pdtvr36n3#
使用Global_temp_view &,因为它是会话作用域,不要终止创建DataFrame时使用的会话。
3条答案
按热度按时间mqkwyuun1#
tl;dr否,无法在
SparkSessions
之间共享DataFrame。一个
DataFrame
存在于一个SparkSession
中(就像RDD
在SparkContext
中一样),SparkSession
成为DataFrame
的一个组成部分,你可以在Dataset
类型构造函数的定义中看到:可以使用
sparkSession
属性访问DataFrame
所属的SparkSession
:9gm1akwq2#
您可以随时写出希望再次使用的 Dataframe ,然后在下次读取它。
pdtvr36n3#
使用Global_temp_view &,因为它是会话作用域,不要终止创建DataFrame时使用的会话。