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?

Tracer
quelle

Antworten:

372

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

TomTom101
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

Narendra Parmar
quelle
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 .

Codeaperatur
quelle
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)
MoeChen
quelle
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

Deepak Babu PR
quelle
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 .

Chetan Tamballa
quelle
2

Versuchen Sie diesen Befehl:

df.show(df.count())
epic_last_song
quelle
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.

SKA
quelle
1

In Databricks können Sie den Datenrahmen in einem Tabellenformat visualisieren. Mit dem Befehl:

display(results)

Es wird so aussehen

Geben Sie hier die Bildbeschreibung ein

Ignacio Alorre
quelle
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

Pritesh Kumar
quelle
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();
Baglay Vyacheslav
quelle
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()
Farrellw
quelle