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?

Odpowiedzi:


374

results.show(20, false)nie zostanie obcięty. Sprawdź ź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


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 .


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)

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


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.


2

spróbuj tego polecenia:

df.show(df.count())

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.


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



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


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

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()
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.