To generalnie nie jest wskazane, aby wyświetlić całą DataFrame na standardowe wyjście, bo to oznacza, że trzeba wyciągnąć całą DataFrame (wszystkich jego wartości) do sterownika (chyba DataFrame
jest już lokalne, które można sprawdzić z df.isLocal
) .
Jeśli nie wiesz przed czasem, że rozmiar zbioru danych jest wystarczająco mały, aby proces JVM sterownika miał wystarczającą ilość pamięci, aby pomieścić wszystkie wartości, nie jest to bezpieczne. Właśnie dlatego domyślnie DataFrame API show()
wyświetla tylko pierwsze 20 wierszy.
można użyć df.collect
która zwraca Array[T]
a następnie iteracyjne nad każdej linii i wydrukować go:
df.collect.foreach(println)
ale tracisz wszystko formatowanie realizowane w df.showString(numRows: Int)
(to show()
używa wewnętrznie).
Więc nie, myślę, że nie ma lepszego sposobu.
Wypróbuj 'myDataFrame.show (false)'. Nie jestem pewien, czy to jest to, czego szukasz. – Pramit
Użyj RDD.toLocalIterator(), jak opisano w tym poście SO: http://stackoverflow.com/questions/21698443/spark-best-practice-for-retrieving-big-data-od-rdd-to-local-machine –