Jak wyświetlić pełną zawartość kolumny w ramce danych Spark?

201

Korzystam z Spark-CSV do ładowania danych do DataFrame. Chcę zrobić proste zapytanie i wyświetlić zawartość:

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 wydaje się być obcięty:

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

Jak wyświetlić pełną treść kolumny?

kreślarz
źródło

Odpowiedzi:

374

results.show(20, false)nie zostanie obcięty. Sprawdź źródło

TomTom101
źródło
4
@tracer Byłbym wdzięczny za zaakceptowanie mojej odpowiedzi, ponieważ rozwiązuje ona Twój problem. Dzięki!
TomTom101
3
Nie OP, ale to rzeczywiście właściwa odpowiedź: Drobne poprawki, wartość logiczna powinna być fałszywa, a nie fałszywa.
xv70,
78
Byłoby to „fałsz” w pythonie, ale „fałsz” w scala / java
drewrobb
4
jest fałszywy (nie fałszywy) w
iskrze
5
odpowiednikiem zapisu do strumienia w trybie konsoli jestdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess
38

Jeśli umieścisz results.show(false), wyniki nie zostaną obcięte

Narendra Parmar
źródło
2
Wyobrażam sobie, że równieżfalse tutaj ma zastosowanie komentarz do odpowiedzi TomTom101 na temat .
Mogsdad
1
@ Narendra Parmar składnia powinna być results.show(20, False). Ten, o którym wspomniałeś, da błąd.
Jai Prakash
@ Jai Prakash, dałem tę odpowiedź na scala, a ty mówisz o python,
Narendra Parmar
@NarendraParmar przepraszam, masz rację. W scalaobie opcje są ważne. results.show(false)orazresults.show(20, false)
Jai Prakash
17

Inne rozwiązania są dobre. Jeśli to są twoje cele:

  1. Bez obcinania kolumn,
  2. Bez utraty wierszy,
  3. Szybki i
  4. Wydajny

Te dwie linie są przydatne ...

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

Utrwalając, 2 akcje executorów, policz i pokazuj, są szybsze i bardziej wydajne podczas używania persistlub cacheutrzymywania tymczasowej struktury ramek danych wewnątrz executorów. Dowiedz się więcej o trwałości i pamięci podręcznej .

kodaperature
źródło
1
Bardzo dobrze. Dzięki!
timbram
15

Poniższy kod pomoże wyświetlić wszystkie wiersze bez obcięcia w każdej kolumnie

df.show(df.count(), False)
MoeChen
źródło
w tym samym pytaniu, o które pytałem wcześniejszego odpowiadającego: czy to powoduje, dfże należy to zbierać dwukrotnie?
javadba,
@javadba tak, myślę, że count () przejdzie raz przez df, a show () zbierze df dwa razy.
MoeChen
10

results.show(20, False)lub w results.show(20, false) zależności od tego, czy używasz go w Javie / Scali / Python

Deepak Babu PR
źródło
3

results.show(false) pokaże pełną treść kolumny.

Pokaż metodę domyślnie limit do 20, a dodanie liczby przed falsepokaże więcej wierszy.

Chetan Tamballa
źródło
2

spróbuj tego polecenia:

df.show(df.count())
epic_last_song
źródło
1
Spróbuj tego: df.show (niektóre nie) będzie działać, ale df.show (df.count ()) nie będzie działać df.count daje typ wyjścia długi, który nie jest akceptowany przez df.show (), ponieważ akceptuje typ całkowity.
Thota Kranthi Kumar
Przykład użycia df.show (2000).
Odzyska
2
czy to powoduje, dfże należy je zbierać dwukrotnie?
javadba,
2

results.show(20,false) zrobił mi lewę w Scali.

SKA
źródło
1

Wewnątrz Databricks można wizualizować ramkę danych w formacie tabelarycznym. Za pomocą polecenia:

display(results)

Będzie to wyglądać

wprowadź opis zdjęcia tutaj

Ignacio Alorre
źródło
0

Spróbuj tego w scala:

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

Metoda show przyjmuje liczbę całkowitą i wartość logiczną, ale df.count zwraca Long ... więc rzutowanie typu jest wymagane

Pritesh Kumar
źródło
0

W c # Option("truncate", false)nie obcina danych na wyjściu.

StreamingQuery query = spark
                    .Sql("SELECT * FROM Messages")
                    .WriteStream()
                    .OutputMode("append")
                    .Format("console")
                    .Option("truncate", false)
                    .Start();
Baglay Wiaczesław
źródło
0

Poniższa odpowiedź dotyczy aplikacji Spark Streaming.

Ustawiając opcję „obcinaj” na wartość false, możesz nakazać wyjściowemu ujściu, aby wyświetlał pełną kolumnę.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
farrellw
źródło