Generalmente non è consigliabile visualizzare un intero dataframe stdout, perché significa che è necessario tirare l'intero dataframe (tutti i suoi valori) per il conducente (a meno che non DataFrame
è già locale, che è possibile controllare con df.isLocal
) .
A meno che non si sappia in anticipo che la dimensione del set di dati è sufficientemente piccola in modo che il processo JVM del driver abbia memoria sufficiente per accogliere tutti i valori, non è sicuro farlo. Ecco perché l'API di DataFrame show()
per impostazione predefinita mostra solo le prime 20 righe.
È possibile utilizzare il df.collect
che restituisce Array[T]
e poi iterare su ogni linea e stamparlo:
df.collect.foreach(println)
ma si perde tutta la formattazione implementato in df.showString(numRows: Int)
(che show()
utilizza internamente).
Quindi no, immagino che non ci sia un modo migliore.
fonte
2015-05-15 18:47:30
Prova 'myDataFrame.show (false)'. Non sono sicuro se questo è quello che stai cercando. – Pramit
Usa RDD.toLocalIterator(), come discusso in questo post SO: http://stackoverflow.com/questions/21698443/spark-best-practice-for-retrieving-big-data-from-rdd-to-local-machine –