Como mostrar o conteúdo completo da coluna em um Spark Dataframe?

201

Estou usando o spark-csv para carregar dados em um DataFrame. Quero fazer uma consulta simples e exibir o conteúdo:

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

A coluna parece truncada:

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

Como mostro o conteúdo completo da coluna?

marcador
fonte

Respostas:

372

results.show(20, false)não truncará. Verifique a fonte

TomTom101
fonte
4
@ Tracer Agradeceria se você aceitasse minha resposta, pois ela resolve seu problema. Obrigado!
TomTom101
3
Não OP, mas esta é realmente a resposta certa: pequenas correções, booleanas devem ser falsas, não falsas.
Xv70
77
Seria "Falso" em python, mas "false" em scala / java
drewrobb
4
é falsa (não falso) em faísca-shell
Luca Gibelli
5
o equivalente para escrever a operação em modo console édataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess
38

Se você colocar results.show(false), os resultados não serão truncados

Narendra Parmar
fonte
2
Imagino que o comentário sobre a resposta de TomTom101 sobre falsese aplica aqui também.
precisa saber é o seguinte
1
@ Narendra Parmar, a sintaxe deve ser results.show(20, False). O que você mencionou dará erro.
Jai Prakash
@ Jai Prakash, tenho dado esta resposta para scala e você está falando de python,
Narendra Parmar
@NarendraParmar Desculpe, você está correto. Em scalaambas as opções são válidas. results.show(false)eresults.show(20, false)
Jai Prakash
17

As outras soluções são boas. Se estes são seus objetivos:

  1. Sem truncamento de colunas,
  2. Sem perda de linhas,
  3. Rápido e
  4. Eficiente

Essas duas linhas são úteis ...

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

Ao persistir, as duas ações do executor, count and show, são mais rápidas e mais eficientes ao usar persistou cachemanter a estrutura intermediária subjacente do quadro de dados dentro dos executores. Veja mais sobre persistir e armazenar em cache .

codeaperature
fonte
1
Muito agradável. Obrigado!
precisa saber é
15

O código abaixo ajudaria a exibir todas as linhas sem truncamento em cada coluna

df.show(df.count(), False)
MoeChen
fonte
mesma pergunta, perguntei ao respondente anterior: isso faz com dfque seja coletado duas vezes?
Javadba
@ javadba sim, acho que count () passará pelo df uma vez e show () coletará o df duas vezes.
MoeChen
10

results.show(20, False)ou results.show(20, false) dependendo se você está executando em Java / Scala / Python

Deepak Babu PR
fonte
3

results.show(false) mostrará o conteúdo completo da coluna.

Mostrar método por limite padrão para 20 e adicionar um número antes falsemostrará mais linhas.

Chetan Tamballa
fonte
2

tente este comando:

df.show(df.count())
epic_last_song
fonte
1
Tente isto: o df.show (alguns não) funcionará, mas o df.show (df.count ()) não funcionará.
Thota Kranthi Kumar
Exemplo use df.show (2000). Ele vai recuperar 2000 linhas
Thota Kranthi Kumar
2
isso faz com dfque seja coletado duas vezes?
Javadba
2

results.show(20,false) fez o truque para mim em Scala.

SKA
fonte
1

Nos Databricks, você pode visualizar o quadro de dados em um formato tabular. Com o comando:

display(results)

Vai parecer

insira a descrição da imagem aqui

Ignacio Alorre
fonte
0

Tente isso em scala:

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

O método show aceita um número inteiro e um valor booleano, mas df.count retorna Long ... então a conversão de tipo é necessária

Pritesh Kumar
fonte
0

Em c # Option("truncate", false)não truncar dados na saída.

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

A resposta a seguir se aplica a um aplicativo Spark Streaming.

Ao definir a opção "truncar" como false, você pode dizer ao coletor de saída para exibir a coluna completa.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
farrellw
fonte