¿Cómo mostrar el contenido de la columna completa en un Spark Dataframe?

201

Estoy usando spark-csv para cargar datos en un DataFrame. Quiero hacer una consulta simple y mostrar el contenido:

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

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

¿Cómo muestro el contenido completo de la columna?

trazador
fuente

Respuestas:

372

results.show(20, false)no se truncará Comprueba la fuente

TomTom101
fuente
44
@tracer Agradecería si aceptara mi respuesta, ya que resuelve su problema. ¡Gracias!
TomTom101
3
No es OP, pero esta es la respuesta correcta: corrección menor, el valor booleano debe ser falso, no falso.
xv70
77
Sería "Falso" en python, pero "falso" en scala / java
drewrobb
44
es falso (no falso) en chispa
Luca Gibelli
55
el equivalente para escribir para transmitir en modo consola esdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess
38

Si pones results.show(false), los resultados no se truncarán

Narendra Parmar
fuente
2
Me imagino que el comentario sobre la respuesta de TomTom101 acerca falseaplica, también.
Mogsdad
1
@Narendra Parmar, la sintaxis debería ser results.show(20, False). El que ha mencionado dará error.
Jai Prakash
@ Jai Prakash, he dado esta respuesta para scala y estás hablando de python,
Narendra Parmar
@NarendraParmar lo siento, tienes razón. En scalaambos las opciones son válidas. results.show(false)yresults.show(20, false)
Jai Prakash el
17

Las otras soluciones son buenas. Si estos son tus objetivos:

  1. Sin truncamiento de columnas,
  2. Sin pérdida de filas,
  3. Rápido y
  4. Eficiente

Estas dos líneas son útiles ...

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

Al persistir, las 2 acciones del ejecutor, contar y mostrar, son más rápidas y más eficientes al usar persisto cachemantener la estructura de trama de datos subyacente provisional dentro de los ejecutores. Ver más sobre persistir y caché .

codeaperature
fuente
1
Muy agradable. ¡Gracias!
timbram
15

El siguiente código ayudaría a ver todas las filas sin truncamiento en cada columna

df.show(df.count(), False)
MoeChen
fuente
misma pregunta que pregunté al respondedor anterior: ¿esto hace dfque se recopile dos veces?
javadba
@javadba sí, creo que count () pasará por df una vez, y show () recogerá df dos veces.
MoeChen
10

results.show(20, False)o results.show(20, false) dependiendo de si lo está ejecutando en Java / Scala / Python

Deepak Babu PR
fuente
3

results.show(false) le mostrará el contenido completo de la columna.

El método Show por defecto limita a 20, y agregar un número antes falsemostrará más filas.

Chetan Tamballa
fuente
2

prueba este comando:

df.show(df.count())
epic_last_song
fuente
1
Intente esto: df.show (algunos no) funcionará pero df.show (df.count ()) no funcionará df.count da un tipo de salida largo que no es aceptado por df.show () ya que acepta el tipo entero.
Thota Kranthi Kumar
Ejemplo de uso df.show (2000). Recuperará 2000 filas
Thota Kranthi Kumar
2
¿Esto hace dfque se recoja dos veces?
javadba
2

results.show(20,false) hizo el truco para mí en Scala.

SKA
fuente
1

Dentro de Databricks puede visualizar el marco de datos en formato tabular. Con el comando:

display(results)

Se verá como

ingrese la descripción de la imagen aquí

Ignacio Alorre
fuente
0

Prueba esto en scala:

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

El método show acepta un número entero y un valor booleano pero df.count devuelve Long ... por lo que se requiere conversión de tipo

Pritesh Kumar
fuente
0

En c # Option("truncate", false)no trunca datos en la salida.

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

La siguiente respuesta se aplica a una aplicación Spark Streaming.

Al establecer la opción "truncar" en falso, puede indicarle al receptor de salida que muestre la columna completa.

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