Wie kann der vollständige Spalteninhalt in einem Spark-Datenrahmen angezeigt werden?


201

Ich verwende spark-csv, um Daten in einen DataFrame zu laden. Ich möchte eine einfache Abfrage durchführen und den Inhalt anzeigen:

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()

Die Spalte scheint abgeschnitten zu sein:

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

Wie zeige ich den vollständigen Inhalt der Spalte?

Antworten:


372

results.show(20, false)wird nicht abgeschnitten. Überprüfen Sie die Quelle


4
@tracer Würde mich freuen, wenn Sie meine Antwort akzeptieren würden, da dies Ihr Problem löst. Vielen Dank!
TomTom101

3
Nicht OP, aber dies ist in der Tat die richtige Antwort: Kleinere Korrektur, Boolescher Wert sollte falsch sein, nicht falsch.
xv70

76
Es wäre "False" in Python, aber "false" in Scala / Java
Drawrobb

4
es ist falsch (nicht falsch) in der Funkenschale
Luca Gibelli

5
Das Äquivalent für das Schreiben zum dataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
Streamen

37

Wenn Sie setzen results.show(false), werden die Ergebnisse nicht abgeschnitten


2
Ich stelle mir vor , dass der Kommentar auf TomTom101 Antwort über falsehier auch gilt.
Mogsdad

1
@ Narendra Parmar sollte die Syntax sein results.show(20, False). Der von Ihnen erwähnte Fehler führt zu einem Fehler.
Jai Prakash

@ Jai Prakash, ich habe diese Antwort für Scala gegeben und Sie sprechen über Python,
Narendra Parmar

@ NarendraParmar Entschuldigung, Sie sind richtig. In scalabeiden Fällen sind die Optionen gültig. results.show(false)undresults.show(20, false)
Jai Prakash

17

Die anderen Lösungen sind gut. Wenn dies Ihre Ziele sind:

  1. Kein Abschneiden von Spalten,
  2. Kein Zeilenverlust,
  3. Schnell und
  4. Effizient

Diese beiden Zeilen sind nützlich ...

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

Durch das Fortbestehen sind die beiden Executor-Aktionen Count und Show schneller und effizienter, wenn die zugrunde liegende vorläufige Datenrahmenstruktur innerhalb der Executors verwendet persistoder cachebeibehalten wird. Weitere Informationen zu Persist und Cache .


1
Sehr schön. Vielen Dank!
Timbram

15

Der folgende Code hilft dabei, alle Zeilen ohne Kürzung in jeder Spalte anzuzeigen

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

Dieselbe Frage, die ich dem vorherigen Antwortenden gestellt habe: Wird diese Ursache dfzweimal gesammelt?
Javadba

@javadba ja, ich denke count () wird df einmal durchlaufen und show () wird df zweimal sammeln.
MoeChen

10

results.show(20, False)oder results.show(20, false) abhängig davon, ob Sie es unter Java / Scala / Python ausführen


3

results.show(false) zeigt Ihnen den vollständigen Inhalt der Spalte.

Die Methode ist standardmäßig auf 20 begrenzt. Wenn Sie zuvor eine Zahl hinzufügen, falsewerden weitere Zeilen angezeigt .


2

Versuchen Sie diesen Befehl:

df.show(df.count())

1
Versuchen Sie Folgendes: df.show (einige no) funktioniert, aber df.show (df.count ()) funktioniert nicht. Df.count gibt den Ausgabetyp long aus, der von df.show () nicht akzeptiert wird, da er den Integer-Typ akzeptiert.
Thota Kranthi Kumar

Beispiel: Verwenden Sie df.show (2000). Es wird 2000 Zeilen abrufen
Thota Kranthi Kumar

2
Wird dies dfzweimal gesammelt?
Javadba

2

results.show(20,false) hat den Trick für mich in Scala gemacht.




0

Versuchen Sie dies in Scala:

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

Die show-Methode akzeptiert eine Ganzzahl und einen Booleschen Wert, aber df.count gibt Long zurück ... daher ist Typumwandlung erforderlich


0

In c # werden Option("truncate", false)Daten in der Ausgabe nicht abgeschnitten.

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

0

Die folgende Antwort gilt für eine Spark-Streaming-Anwendung.

Wenn Sie die Option "Abschneiden" auf "Falsch" setzen, können Sie die Ausgabesenke anweisen, die vollständige Spalte anzuzeigen.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.