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