Python 将Spark数据帧或GlobalTempView与PySpark一起使用
我是个新手我设法将PySpark数据帧(在%python上下文中创建)传递给Spark数据帧(在Scala单元中使用)。但我需要知道的是如何做相反的事情:在Scala单元格中使用在%python上下文中创建的数据帧。 详情如下。我已经读取了txt文件中的两个表,并将它们传递给PySpark Dataframes。我还将它们传递给了GlobalTempViewsPython 将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
%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")