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_1
和field_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 配置