Spark Dataframeで列のコンテンツ全体を表示するにはどうすればよいですか?


201

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:...|
+--------------------+

列のコンテンツ全体を表示するにはどうすればよいですか?

回答:


372

results.show(20, false)切り捨てられません。ソースを確認する


4
@トレーサーそれがあなたの問題を解決するならば、あなたが私の答えを受け入れてくれれば幸いです。ありがとう!
TomTom101 2015年

3
OPではありませんが、これは確かに正しい答えです。マイナーな修正、ブール値はFalseではなくFalseにする必要があります。
xv70

77
Pythonでは「False」ですが、scala / javaでは「false」
drewrobb

4
スパークシェルではfalse(falseではありません)
Luca Gibelli

5
コンソールモードでストリームに書き込むのと同じdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess

38

を入れた場合results.show(false)、結果は切り捨てられません


2
私はと想像TomTom101の答えにコメントがおよそfalseすぎて、ここで適用されます。
Mogsdad 2016

1
@Narendra Parmarの構文は次のとおりresults.show(20, False)です。あなたが言及したものはエラーになります。
Jai Prakash 2017

ジャイプラカシュ@、私はScalaのために、この答えを与えている、あなたは、Pythonの話をしている
ナレンドラParmar

@NarendraParmarごめんなさい。ではscala、両方のオプションが有効です。results.show(false)およびresults.show(20, false)
Jai Prakash 2017

17

他のソリューションは良いです。これらがあなたの目標である場合:

  1. 列の切り捨てなし、
  2. 行の損失なし、
  3. 高速かつ
  4. 効率的

これらの2行は便利です...

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

永続化することで、カウントと表示の2つのエグゼキュータアクションは、エグゼキュータ内の中間の基本的なデータフレーム構造を使用persistまたはcache維持するときに、より高速かつ効率的になります。永続化とキャッシュの詳細をご覧ください。


1
非常に素晴らしい。ありがとう!
timbram

15

以下のコードは、各列で切り捨てずにすべての行を表示するのに役立ちます

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

同じ質問私は前の回答者に尋ねました:これdfは2回収集される原因ですか?
javadba 2018

@javadbaはい、count()はdfを1回実行し、show()はdfを2回収集すると思います。
MoeChen


3

results.show(false) 列の内容全体が表示されます。

メソッドをデフォルトで20に制限して表示し、前falseに数値を追加すると、さらに行が表示されます。



2

results.show(20,false) Scalaで私のためにトリックをしました。




0

これをscalaで試してください:

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

showメソッドは整数とブール値を受け入れますが、df.countはLong ...を返すため、型キャストが必要です


0

c# Option("truncate", false)では、出力のデータは切り捨てられません。

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

0

次の回答は、Spark Streamingアプリケーションに適用されます。

「truncate」オプションをfalseに設定すると、列全体を表示するように出力シンクに指示できます。

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.