Pyspark: отображение кадра искровых данных в формате таблицы
Я использую pyspark для чтения файла паркета, как показано ниже:
my_df = sqlContext.read.parquet('hdfs://myPath/myDB.db/myTable/**')
Затем, когда я делаю my_df.take(5)
, он будет показывать [Row(...)]
вместо табличного формата, например, когда мы используем фрейм данных pandas.
Можно ли отобразить фрейм данных в формате таблицы, например pandas? Спасибо!
Ответы
Ответ 1
Метод show делает то, что вы ищете.
Например, учитывая следующий фрейм данных из 3 строк, я могу напечатать только первые две строки, такие как:
df = sqlContext.createDataFrame([("foo", 1), ("bar", 2), ("baz", 3)], ('k', 'v'))
df.show(n=2)
который дает:
+---+---+
| k| v|
+---+---+
|foo| 1|
|bar| 2|
+---+---+
only showing top 2 rows
Ответ 2
Да: вызовите метод toPandas
на вашем фреймворке данных, и вы получите фактический pandas dataframe!
Ответ 3
Как упомянуто @Brent в комментарии ответа @maxymoo, вы можете попробовать
df.limit(10).toPandas()
чтобы получить более симпатичный стол в Jupyter. Но это может занять некоторое время, если вы не кэшируете фрейм данных spark. Кроме того, .limit()
не будет сохранять порядок исходного .limit()
данных искры.
Ответ 4
Есть ли способ печати вместо показа? Предположим, я хочу сохранить эти результаты в файле вывода.
Я не могу open("out.txt", "w")
и просто file.write(df.show())
потому что show не возвращает строку, так как бы вы это сделали?