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

tra*_*cer 168 dataframe output-formatting apache-spark spark-csv

我使用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()
Run Code Online (Sandbox Code Playgroud)

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:...|
+--------------------+
Run Code Online (Sandbox Code Playgroud)

如何显示列的完整内容?

Tom*_*101 317

results.show(20, false)不会截断.检查来源

  • 它在python中是"False",但在scala/java中是"false" (63认同)
  • 在控制台模式下写入流的等效项是`dataFrame.writeStream.outputMode(“ append”)。format(“ console”)。option(“ truncate”,“ false”)。start()` (5认同)
  • @tracer如果您接受我的答案,我会很感激,因为它解决了您的问题.谢谢! (4认同)
  • 它在火花壳中是假的(不是假的) (4认同)
  • 20有什么特别之处?为什么是20? (3认同)
  • 不是OP,但这确实是正确的答案:次要修正,布尔应该是假,而不是假. (2认同)
  • OP询问如何不截断列,因此@TomTom101给了他们等效的“df.show()”(默认20行),但不截断列。即 `df.show(20, false)` (2认同)

Nar*_*mar 31

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

  • @Narendra Parmar 语法应该是“results.show(20, False)”。你说的那个会报错。 (3认同)
  • 我想[TomTom101的回答评论](http://stackoverflow.com/users/3435649/xv70)关于`false`也适用于此. (2认同)
  • @ Jai Prakash,我已经给出了 scala 的答案,而你正在谈论 python, (2认同)

cod*_*ure 14

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

  1. 没有截断列,
  2. 没有丢失行,
  3. 快和
  4. 高效

这两行很有用......

    df.persist
    df.show(df.count, false) // in Scala or 'False' in Python
Run Code Online (Sandbox Code Playgroud)

通过持久化,在执行程序中使用persistcache维护临时基础数据框结构时,2执行程序操作(计数和显示)更快,更高效.查看有关persist和cache的更多信息.


小智 13

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

df.show(df.count(), False)
Run Code Online (Sandbox Code Playgroud)


小智 11

Pyspark中我们可以使用

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

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


小智 9

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


far*_*llw 9

The following answer applies to a Spark Streaming application.

By setting the "truncate" option to false, you can tell the output sink to display the full column.

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


小智 6

在 Spark Pythonic 方式中,请记住:

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

希望它可以帮助别人。