¿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?

Respuestas:


372

results.show(20, false)no se truncará Comprueba la 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


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é .


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)

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


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.


2

prueba este comando:

df.show(df.count())

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.




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


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

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()
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.