Comment afficher le contenu d'une colonne complète dans une trame de données Spark?


201

J'utilise spark-csv pour charger des données dans un DataFrame. Je veux faire une simple requête et afficher le contenu:

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

Le col semble tronqué:

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

Comment afficher le contenu complet de la colonne?

Réponses:


372

results.show(20, false)ne tronquera pas. Vérifiez la source


4
@tracer apprécierait que vous acceptiez ma réponse, car elle résout votre problème. Merci!
TomTom101

3
Pas OP mais c'est en effet la bonne réponse: correction mineure, booléen devrait être Faux, pas faux.
xv70

77
Ce serait "False" en python, mais "false" en scala / java
drewrobb

4
c'est faux (pas faux) en spark-shell
Luca Gibelli

5
l'équivalent pour l'écriture en streaming en mode console estdataFrame.writeStream.outputMode("append").format("console").option("truncate", "false").start()
JMess

38

Si vous mettez results.show(false), les résultats ne seront pas tronqués


2
J'imagine que le commentaire sur la réponse de TomTom101 à propos falses'applique ici aussi.
Mogsdad

1
@Narendra Parmar la syntaxe devrait être results.show(20, False). Celui que vous avez mentionné donnera une erreur.
Jai Prakash

@ Jai Prakash, j'ai donné cette réponse pour scala et vous parlez de python,
Narendra Parmar

@NarendraParmar désolé que vous ayez raison. Dans les scaladeux cas, les options sont valides. results.show(false)etresults.show(20, false)
Jai Prakash

17

Les autres solutions sont bonnes. Si ce sont vos objectifs:

  1. Pas de troncature de colonnes,
  2. Pas de perte de rangs,
  3. Vite et
  4. Efficace

Ces deux lignes sont utiles ...

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

En persistant, les 2 actions de l'exécuteur, compter et afficher, sont plus rapides et plus efficaces lors de l'utilisation persistou cachedu maintien de la structure de trame de données sous-jacente intérimaire au sein des exécuteurs. En savoir plus sur la persistance et le cache .


1
Très agréable. Merci!
timbram

15

Le code ci-dessous aiderait à afficher toutes les lignes sans troncature dans chaque colonne

df.show(df.count(), False)

même question que j'ai posée au répondeur précédent: cette cause dfdoit-elle être collectée deux fois?
javadba

@javadba oui, je pense que count () passera par df une fois, et show () collectera deux fois df.
MoeChen

10

results.show(20, False)ou results.show(20, false) selon que vous l'exécutez sur Java / Scala / Python


3

results.show(false) vous montrera le contenu complet de la colonne.

Afficher la méthode par défaut à 20, et ajouter un nombre avant falseaffichera plus de lignes.


2

essayez cette commande:

df.show(df.count())

1
Essayez ceci: df.show (certains non) fonctionnera mais df.show (df.count ()) ne fonctionnera pas df.count donne un type de sortie long qui n'est pas accepté par df.show () car il accepte le type entier.
Thota Kranthi Kumar

Exemple, utilisez df.show (2000). Il récupérera 2000 lignes
Thota Kranthi Kumar

2
cette cause dfdoit-elle être collectée deux fois?
javadba

2

results.show(20,false) a fait l'affaire pour moi à Scala.


1

Dans Databricks, vous pouvez visualiser la trame de données dans un format tabulaire. Avec la commande:

display(results)

Cela ressemblera à

entrez la description de l'image ici



0

Essayez ceci dans scala:

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

La méthode show accepte un entier et une valeur booléenne mais df.count renvoie Long ... donc la conversion de type est requise


0

En c # Option("truncate", false)ne tronque pas les données dans la sortie.

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

0

La réponse suivante s'applique à une application Spark Streaming.

En définissant l'option "tronquer" sur false, vous pouvez indiquer au récepteur de sortie d'afficher la colonne complète.

val query = out.writeStream
          .outputMode(OutputMode.Update())
          .format("console")
          .option("truncate", false)
          .trigger(Trigger.ProcessingTime("5 seconds"))
          .start()
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.