如何在 Databricks 笔记本的 Python 单元中使 DataFrame 可见?

Posted

技术标签:

【中文标题】如何在 Databricks 笔记本的 Python 单元中使 DataFrame 可见?【英文标题】:How to make a DataFrame visible in Python cell in Databricks notebook? 【发布时间】:2019-06-20 22:21:58 【问题描述】:

我使用 Databricks 在 Scala 中创建了 Spark DataFrame。在做了一些预处理之后,我想出了一个适合内存的更小的数据子集。因此,我想将其转换为 Pandas,然后另存为 CSV 文件。

问题是我在 Scala 单元格中的 Databricks 笔记本中工作的 DataFrame df 在 Python 单元格中不可见。

%python

df.toPandas().to_csv("dbfs:/FileStore/tables/test.csv", header=True, index=False)

如何使df 在 Python 单元格中可见?

【问题讨论】:

可能好得令人难以置信,但是:df_py = df.toPandas().to_csv("dbfs:/FileStore/tables/test.csv", header=True, index=False) 然后print(df_py)? @Erfan:它不起作用。它说找不到dfNameError: name 'df' is not defined。但是df存在于我之前执行成功的上述单元格中。 其实你不需要导出到 csv,只要:df_py = df.toPandas() 然后print(df_py) @Erfan:这应该是 Python 单元格,对吧?如果是这样,问题是df 在 Python 单元格中不可见。 在 Spark 单元中尝试,然后在 python 单元中使用df_py 【参考方案1】:

这样做display(df)。它通常也会显示一些嵌套的结构体。

或者我会做这样的事情 df.createOrReplaceTempView("dfViewName") 在下一个单元格中 %sql

Select * from dfViewName

【讨论】:

display(df) 正是我所需要的。关于sql,我认为如果我想在下一个单元格中使用SQL会很有用,但我想使用Python。由于我的最终目标只是保存 CSV 文件,因此显示是正确的解决方案。 顺便问一下,我将使用哪种方法来保存 DataFrame 以使其在同一集群上的另一个 Databricks Notebook 中可访问? @Erfan:我想要 pandas 将 DataFrame 保存为 CSV 文件。对不起,如果不清楚。当然,我很高兴看到 Pandas 的解决方案。但如果不可能,那么“显示”对我来说是一种解决方法。

以上是关于如何在 Databricks 笔记本的 Python 单元中使 DataFrame 可见?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Azure Databricks 笔记本运行详细信息

如何使用 Python / Pyspark 在 Databricks 笔记本中合并数据帧

如何在 Databricks 的 PySpark 中使用在 Scala 中创建的 DataFrame

如何在 Azure Databricks 笔记本中调试长时间运行的 python 命令?

如何动态获取 Databricks Notebook 的路径?

如何从 Databricks 中的 SQL 语句输出创建变量