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 не возвращает строку, так как бы вы это сделали?