Python 将Spark数据帧或GlobalTempView与PySpark一起使用

Python 将Spark数据帧或GlobalTempView与PySpark一起使用,python,scala,apache-spark,pyspark,apache-spark-sql,Python,Scala,Apache Spark,Pyspark,Apache Spark Sql,我是个新手我设法将PySpark数据帧(在%python上下文中创建)传递给Spark数据帧(在Scala单元中使用)。但我需要知道的是如何做相反的事情:在Scala单元格中使用在%python上下文中创建的数据帧。 详情如下。我已经读取了txt文件中的两个表,并将它们传递给PySpark Dataframes。我还将它们传递给了GlobalTempViews %python #Pass txt curated files to Data Frames df_a = spark.read.op

我是个新手我设法将PySpark数据帧(在%python上下文中创建)传递给Spark数据帧(在Scala单元中使用)。但我需要知道的是如何做相反的事情:在Scala单元格中使用在%python上下文中创建的数据帧。

详情如下。我已经读取了txt文件中的两个表,并将它们传递给PySpark Dataframes。我还将它们传递给了GlobalTempViews

%python

#Pass txt curated files to Data Frames
df_a = spark.read.option("header","true").option("delimiter","|").csv(curated_path_a) 
df_b = spark.read.option("header","true").option("delimiter","|").csv(curated_path_b) 

df_a.createOrReplaceTempView("df_a")
df_b.createOrReplaceTempView("df_b")
然后我需要使用scala代码,所以我将PySpark数据帧传递给spark表

//Passing Pyspark Data Frames to Spark Data Frames
val df_a = spark.table("df_a")
val df_b = spark.table("df_b")
然后我加入了这些表,得到了另一个数据帧,它被标为df_joined_表。我把它传给了GlobalTempView

//Creating scala variables for each table
var table_name_a = dbutils.widgets.get("table_name_a")
var table_name_b = dbutils.widgets.get("table_name_b")

//Create scala variable for Join ID
var join_id = dbutils.widgets.get("table_name_b") + "ID"
//var join_id = table_name_b + "ID"

// Define join type
var join_type = dbutils.widgets.get("join_type")

// Joining Tables
var df_joined_tables = df_a
                                     .join(df_b,                                               
                                               df_a(join_id)===df_b(join_id),
                                              join_type
                                          ).select($"df_a.*",$"df_b.Description".alias(table_name_b))

df_joined_tables.createOrReplaceGlobalTempView("df_joined_tables")
display(df_joined_tables)
现在我需要在%python上下文中使用这个df_joined_表。我正在尝试下面的代码,但是我得到一个错误“未找到表或视图:df_joined_tables”。我怎样才能修好它?提前谢谢你

%python
df_joined_tables = spark.table("df_joined_tables")

要访问全局临时视图,需要在表名之前使用全局临时作为关键字。 在您的情况下,请尝试以下方法:

%python
df_joined_tables = spark.table("global_temp.df_joined_tables")

要访问全局临时视图,需要在表名之前使用全局临时作为关键字。 在您的情况下,请尝试以下方法:

%python
df_joined_tables = spark.table("global_temp.df_joined_tables")