2016-08-21 3 views
2

Я использую pyspark читать паркетный файл, как показано ниже:Pyspark: отображение кадра искры данных в табличном формате

my_df = sqlContext.read.parquet('hdfs://myPath/myDB.db/myTable/**') 

Тогда, когда я my_df.take(5), он будет показывать [Row(...)], вместо формата таблица, как когда мы используем кадр данных pandas.

Можно ли отобразить фрейм данных в формате таблицы, таком как рамка данных pandas? Благодаря!

+4

попробовать это: 'my_df.take (5) .show() ' – MaxU

+0

я получил ошибку: в () ----> my_df.take (5) .show() AttributeError: 'список' объект имеет нет атрибута 'show' – Edamame

+1

it должен быть 'my_df.show(). take (5)' – maxymoo

ответ

8

Метод show делает то, что вы ищете.

Например, с учетом следующих dataframe из 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!

+1

Я попытался сделать: my_df.toPandas(). Head(). Но получил ошибку: Py4JJavaError: Произошла ошибка при вызове z: org.apache.spark.api.python.PythonRDD.collectAndServe. : org.apache.spark.SparkException: задание прерывается из-за срыва этапа: задача 301 в стадии 2.0 не удалась 1 раз, последний сбой: потерянная задача 301.0 на этапе 2.0 (TID 1871, localhost): java.lang.OutOfMemoryError: Java пустое пространство – Edamame

+3

Это опасно, так как это приведет к сбору всего кадра данных в один узел. –

+2

Следует подчеркнуть, что это быстро выберет память в традиционных сценариях Spark RDD. – deepelement

Смежные вопросы