2016-08-07 2 views
0

У меня есть список, который генерируется функцией. когда я исполню print в моем списке:Невозможно создать dataframe из списка: pyspark

print preds_labels

я получаю:

[(0.,8.),(0.,13.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,19.),(0.,20.),(0.,21.),(0.,23.)] 

, но когда я хочу, чтобы создать DataFrame с этой командой:

df = sqlContext.createDataFrame(preds_labels, ["prediction", "label"]) 

я получаю ошибку сообщение:

не поддерживается тип: тип «numpy.float64»

Если я создаю список вручную, у меня нет никаких проблем. У вас есть идея?

+0

Я ответил на аналогичный вопрос к этому, проверьте [его] (http://stackoverflow.com/ вопросы/38517808/create-a-dataframe-from-a-list-in-pyspark-sql/38517873 # 38517873) out – limbo

+0

спасибо за ваш ответ, он работает –

ответ

1

pyspark использует свою систему типа и, к сожалению, не имеет дело с numpy well. Однако он работает с типами python. Таким образом, вы можете вручную преобразовать numpy.float64 в float как

df = sqlContext.createDataFrame(
    [(float(tup[0]), float(tup[1]) for tup in preds_labels], 
    ["prediction", "label"] 
) 

Примечание pyspark будет принимать их как pyspark.sql.types.DoubleType

+0

спасибо за ваш ответ, он работает –

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