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?

Respostas:


372

results.show(20, false)não truncará. Verifique a 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


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 .


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)

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


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.



2

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




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


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

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()
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.