jupyter笔记本中的spark vs pandas数据框(带有大列)head(n)

Posted

技术标签:

【中文标题】jupyter笔记本中的spark vs pandas数据框(带有大列)head(n)【英文标题】:spark vs pandas dataframe (with large columns) head(n) in jupyter notebook 【发布时间】:2018-06-13 06:45:11 【问题描述】:

如今,数据具有大量特征。为了获得数据的简短摘要,人们将数据加载到数据框中并使用head() 方法来显示它。使用 Jupyter Notebooks(使用 Toree for scala)运行实验是很常见的。

Spark (scala) 适合处理大量数据,但其head() 方法不会在水平滚动的笔记本中显示列标题。

Pandas 数据框头 Spark Scala 数据帧头

我知道您可以使用 .columns 在 scala 数据框中获取列标题,但打印它不会沿数据列显示标题,因此难以理解。

【问题讨论】:

【参考方案1】:

试试df.show(n=20, truncate=False),而不是df.head(20)。这是详细的documentation。

【讨论】:

对于python,我可以同时使用pyspark和pandas,所以不会出现这样的问题。问题是关于 scala 中的 spark(您的文档:pyspark,正确的文档:spark.apache.org/docs/latest/api/scala/…)。 df.show() 的输出对于大量列是不可读的。 我已经试过了,它给出了垃圾输出。尝试使用 100 列的数据框。事实上,Scala 版本还有一个参数“vertical”,但它是垂直逐行显示的。但是,我正在寻找像 df.head(10) 这样可水平滚动的漂亮表格显示,但带有可滚动的列标题。 Pandas 与 jupyter 紧密结合,所以它可以做很多好事。但这是诀窍,将您的 spark 数据帧转换为 pandas 数据帧。我现在没有可以试用的 jupyter 希望这能解决您的问题df.limit(20).toPandas().head() 您没有遇到问题。这是关于 scala spark,而不是 pyspark。 toPandas 不适用于 scala。

以上是关于jupyter笔记本中的spark vs pandas数据框(带有大列)head(n)的主要内容,如果未能解决你的问题,请参考以下文章

将 Jupyter 笔记本连接到 Spark

从同一目录启动多个 Jupyter Spark 笔记本时发生 Metastore 错误

在 jupyter 中运行 spark.sql 查询

PySpark Jupyter 笔记本显示器

如果没有自动连接,如何将 Jupyter 内核连接到 VS Code?

在 VS Code 中使用 Jupyter 笔记本时如何摆脱重复的“修改设置”弹出窗口?