我正在使用 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:...|
+--------------------+
如何显示列的全部内容?
如果你放 results.show(false)
,结果将不会被截断
false
的 the comment on TomTom101's answer 也适用于此。
results.show(20, False)
。你提到的那个会出错。
scala
中,这两个选项都有效。 results.show(false)
和 results.show(20, false)
下面的代码将有助于查看每列中没有截断的所有行
df.show(df.count(), False)
df
被收集两次?
df.count()
,以节省持久化的要求。例如,如果 df 的行数是 1000,您可以执行 df.show(1000000, false)
,它会起作用。尝试了以下,它的工作:scala> println(df.count) res2: Long = 987 scala> df.show(990)
其他解决方案都很好。如果这些是您的目标:
不截断列,不丢失行,快速高效
这两行很有用...
df.persist
df.show(df.count, false) // in Scala or 'False' in Python
通过坚持,计数和显示这 2 个执行器操作更快且更快速。使用 persist
或 cache
来维护执行器中的临时底层数据帧结构时效率更高。查看有关 persist and cache 的更多信息。
results.show(20, False)
或 results.show(20, false)
取决于您是在 Java/Scala/Python 上运行它
在 Pyspark 我们可以使用
df.show(truncate=False) 这将显示不截断的列的全部内容。
df.show(5,truncate=False) 这将显示前五行的全部内容。
以下答案适用于 Spark Streaming 应用程序。
通过将“truncate”选项设置为 false,您可以告诉输出接收器显示完整的列。
val query = out.writeStream
.outputMode(OutputMode.Update())
.format("console")
.option("truncate", false)
.trigger(Trigger.ProcessingTime("5 seconds"))
.start()
在 c# 中,Option("truncate", false)
不会截断输出中的数据。
StreamingQuery query = spark
.Sql("SELECT * FROM Messages")
.WriteStream()
.OutputMode("append")
.Format("console")
.Option("truncate", false)
.Start();
results.show(false)
将显示完整的列内容。
默认显示方法限制为 20,在 false
之前添加一个数字将显示更多行。
results.show(20,false)
在 Scala 中为我成功了。
试试 df.show(20,False)
请注意,如果您未指定要显示的行数,它将显示 20 行,但会执行所有数据帧,这将花费更多时间!
试试这个命令:
df.show(df.count())
df
被收集两次?
在 pyspark 中试过这个
df.show(truncate=0)
在 Spark Pythonic 方式中,请记住:
如果您必须显示数据框中的数据,请使用 show(truncate=False) 方法。
否则,如果您必须显示来自 Stream 数据框视图(结构化流)的数据,请使用带有选项的 writeStream.format("console").option("truncate", False).start() 方法。
希望它可以帮助某人。
在scala中试试这个:
df.show(df.count.toInt, false)
show 方法接受一个整数和一个布尔值,但 df.count 返回 Long...所以需要类型转换
火花
在下面的代码中,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
dataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()