我正在使用Databricks并尝试在同一个Scala笔记本中将数据帧从Scala传递到Python。我使用以下命令将数据帧从Python传递给Spark:
%python
python_df.registerTempTable("temp_table")
val scalaDF = table("temp_table")
我如何反向做同样的事情?非常感谢你!!
答案 0 :(得分:2)
反过来也差不多了。在斯卡拉:
scalaDF.registerTempTable("some_table")
在Python中:
spark.table("some_table")
如果您使用最新的Spark版本,则应使用createOrReplaceTempView
代替registerTempTable
。
答案 1 :(得分:0)
您可以使用.createOrReplaceTempView()方法或sql()。
这里是一个示例,它将数据帧从scala,python传递到sql,并在此过程中进行了修改,然后再返回到scala。
%scala
var df = spark.range(0,10).selectExpr("*","'scala' language_origin")
df.createOrReplaceTempView("tableName")
display(df)
%python
df = sql("select * from tableName")
df2 = df.selectExpr("*","'python' language_added")
df2.createOrReplaceTempView("tableName")
display(df2)
%sql
create or replace temp view tableName as
select *, 'sql' language_added from tableName;
select * from tableName
%scala
df = sql("select * from tableName")
display(df)