Pyspark:Jupyter Notebook 中的 spark 数据框列宽配置

Posted

技术标签:

【中文标题】Pyspark:Jupyter Notebook 中的 spark 数据框列宽配置【英文标题】:Pyspark: spark data frame column width configuration in Jupyter Notebook 【发布时间】:2016-08-25 20:19:09 【问题描述】:

我在 Jupyter Notebook 中有以下代码:

import pandas as pd
pd.set_option('display.max_colwidth', 80)
my_df.select('field_1','field_2').show()

我想增加列宽,以便可以看到field_1field_2 的完整值。我知道我们可以将pd.set_option('display.max_colwidth', 80) 用于pandas 数据框,但它似乎不适用于spark 数据框。

有没有办法像我们为 pandas 数据框所做的那样增加 spark 数据框的列宽?谢谢!

【问题讨论】:

您是否尝试将其注册为临时表,然后使用 SQL 上下文将其显示为表? 【参考方案1】:

我认为您不能设置特定的宽度,但这将确保您的数据无论大小都不会被截断

my_df.select('field_1','field_2').show(10, truncate = False)

【讨论】:

我得到了错误:如果我使用上面的代码,show() 得到了一个意外的关键字参数 'truncate'。有什么想法吗? 嗯,尝试不使用 truncate= 部分,例如 show(False) 然后我得到了错误:Py4JError:调用 o105.showString 时发生错误。追踪:... 每次我使用它时,我也指定了要显示的记录数(show(5,truncate = False)),但是 api 文档说其他方式应该可以工作。也许试试这种方式? my_df 是 pandas 数据框还是 spark 数据框?你能展示它是如何创建的吗【参考方案2】:

这应该会给你你想要的

import pandas as pd
pd.set_option('display.max_colwidth', 80)
my_df.select('field_1','field_2').limit(100).toPandas()

【讨论】:

数据很大,无法转换成Pandas()。我需要在 pyspark 数据框中进行操作 是的,但是当您执行 show() 时,它也会全部写入您的笔记本。如果数据很大,则必须对其进行限制以进行显示。我这就是为什么放在这里 .limit(100) 所以只有前 100 条记录会显示在笔记本中。您可以删除它并获得所有记录。【参考方案3】:

以下两种方法都可以

my_df.select('field1','field2').show(10,False)

my_df.select('field1','field2').show(False)

【讨论】:

【参考方案4】:

您只需在 show() 中的逗号后添加 0 或 False,如下所示:

my_df.select('field1','field2').show(10,0) 
or
my_df.select('field1','field2').show(10,False) 

最好的,

【讨论】:

以上是关于Pyspark:Jupyter Notebook 中的 spark 数据框列宽配置的主要内容,如果未能解决你的问题,请参考以下文章

将 PySpark 与 Jupyter Notebook 集成

PySpark 和 Jupyter-notebook 中的 Collect() 错误

使用常规 Jupyter Notebook 导入 PySpark 包

Jupyter Notebook 中的 PySpark 配置

在 jupyter notebook 中将自定义 jars 添加到 pyspark

如何为 pyspark jupyter notebook 设置端口?