ChatGPT解决这个技术问题 Extra ChatGPT

如何在 Spark Dataframe 中显示完整的列内容?

我正在使用 spark-csv 将数据加载到 DataFrame 中。我想做一个简单的查询并显示内容:

val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("my.csv")
df.registerTempTable("tasks")
results = sqlContext.sql("select col from tasks");
results.show()

col 似乎被截断:

scala> results.show();
+--------------------+
|                 col|
+--------------------+
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:15:...|
|2015-11-06 07:15:...|
|2015-11-16 07:15:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
|2015-11-16 07:21:...|
+--------------------+

如何显示列的全部内容?


G
GreenGiant

results.show(20, false) 不会截断。检查 source

20 是在不带任何参数的情况下调用 show() 时显示的默认行数。


不是 OP,但这确实是正确的答案:较小的更正,布尔值应该是假的,而不是假的。
在 python 中是“假”,但在 scala/java 中是“假”
在 spark-shell 中是假的(不是假的)
在控制台模式下写入流的等价物是 dataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
20有什么特别的?为什么是20?
S
Shubham Chaudhary

如果你放 results.show(false) ,结果将不会被截断


我想关于 falsethe comment on TomTom101's answer 也适用于此。
@Narendra Parmar 语法应该是 results.show(20, False)。你提到的那个会出错。
@ Jai Prakash,我已经为 scala 给出了这个答案,而您正在谈论 python,
@NarendraParmar 对不起,你是对的。在 scala 中,这两个选项都有效。 results.show(false)results.show(20, false)
M
MoeChen

下面的代码将有助于查看每列中没有截断的所有行

df.show(df.count(), False)

我问过之前的回答者同样的问题:这是否会导致 df 被收集两次?
@javadba 是的,我认为 count() 将通过 df 一次,而 show() 将收集 df 两次。
作为替代方案,您可以提供一个非常大的数字作为第一个参数而不是 df.count(),以节省持久化的要求。例如,如果 df 的行数是 1000,您可以执行 df.show(1000000, false),它会起作用。尝试了以下,它的工作:scala> println(df.count) res2: Long = 987 scala> df.show(990)
c
codeaperature

其他解决方案都很好。如果这些是您的目标:

不截断列,不丢失行,快速高效

这两行很有用...

    df.persist
    df.show(df.count, false) // in Scala or 'False' in Python

通过坚持,计数和显示这 2 个执行器操作更快且更快速。使用 persistcache 来维护执行器中的临时底层数据帧结构时效率更高。查看有关 persist and cache 的更多信息。


非常好。谢谢!
S
Sai

results.show(20, False)results.show(20, false) 取决于您是在 Java/Scala/Python 上运行它


R
RaHuL VeNuGoPaL

在 Pyspark 我们可以使用

df.show(truncate=False) 这将显示不截断的列的全部内容。

df.show(5,truncate=False) 这将显示前五行的全部内容。


f
farrellw

以下答案适用于 Spark Streaming 应用程序。

通过将“truncate”选项设置为 false,您可以告诉输出接收器显示完整的列。

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()

B
Baglay Vyacheslav

在 c# 中,Option("truncate", false) 不会截断输出中的数据。

StreamingQuery query = spark
                    .Sql("SELECT * FROM Messages")
                    .WriteStream()
                    .OutputMode("append")
                    .Format("console")
                    .Option("truncate", false)
                    .Start();

O
OneCricketeer

results.show(false) 将显示完整的列内容。

默认显示方法限制为 20,在 false 之前添加一个数字将显示更多行。


I
Ignacio Alorre

Databricks 中,您可以以表格格式可视化数据框。使用命令:

display(results)

它看起来像

https://i.stack.imgur.com/g0Svi.png


z
zero323

results.show(20,false) 在 Scala 中为我成功了。


D
Djihane AKROUM

试试 df.show(20,False)

请注意,如果您未指定要显示的行数,它将显示 20 行,但会执行所有数据帧,这将花费更多时间!


e
epic_last_song

试试这个命令:

df.show(df.count())

试试这个: df.show(some no) 会工作,但 df.show(df.count()) 不会工作 df.count 给出的输出类型 long 不被 df.show() 接受,因为它接受整数类型。
示例使用 df.show(2000)。它将检索 2000 行
这是否会导致 df 被收集两次?
o
onemanarmy

在 pyspark 中试过这个

df.show(truncate=0)

n
ngenne

在 Spark Pythonic 方式中,请记住:

如果您必须显示数据框中的数据,请使用 show(truncate=False) 方法。

否则,如果您必须显示来自 Stream 数据框视图(结构化流)的数据,请使用带有选项的 writeStream.format("console").option("truncate", False).start() 方法。

希望它可以帮助某人。


K
KeepLearning

我使用插件 Chrome 扩展工作得很好:

[https://userstyles.org/styles/157357/jupyter-notebook-wide][1]


P
Pritesh Kumar

在scala中试试这个:

df.show(df.count.toInt, false)

show 方法接受一个整数和一个布尔值,但 df.count 返回 Long...所以需要类型转换


S
Sarath Subramanian

火花

在下面的代码中,df 是数据框的名称。第一个参数是动态显示数据框中的所有行,而不是硬编码一个数值。第二个参数将负责显示完整的列内容,因为该值设置为 False

df.show(df.count(),False)

https://i.stack.imgur.com/Lu6Dv.png

斯卡拉

在下面的代码中,df 是数据框的名称。第一个参数是动态显示数据框中的所有行,而不是硬编码一个数值。第二个参数将负责显示完整的列内容,因为该值设置为 false

df.show(df.count().toInt,false)

https://i.stack.imgur.com/Bv9Kw.png