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?

traceur
la source

Réponses:

372

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

TomTom101
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

Narendra Parmar
la source
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 .

codéature
la source
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)
MoeChen
la source
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

Deepak Babu PR
la source
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.

Chetan Tamballa
la source
2

essayez cette commande:

df.show(df.count())
epic_last_song
la source
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.

SKA
la source
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

Ignacio Alorre
la source
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

Pritesh Kumar
la source
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();
Baglay Vyacheslav
la source
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()
farrellw
la source