Подтвердить что ты не робот

Создайте Spark DataFrame. Невозможно вывести схему для типа: <type 'float'>

Может кто-нибудь помочь мне решить эту проблему, которую я имею с искровым DataFrame?

Когда я делаю myFloatRDD.toDF(), я получаю сообщение об ошибке:

TypeError: не может вывести схему для типа: type 'float'

Я не понимаю, почему...

Пример:

myFloatRdd = sc.parallelize([1.0,2.0,3.0])
df = myFloatRdd.toDF()

Спасибо

4b9b3361

Ответ 1

SparkSession.createDataFrame, который используется под капотом, требуется RDD/list of Row/tuple/list/ dict * или pandas.DataFrame, если не указана схема с DataType. Попробуйте что-то вроде этого:

myFloatRdd.map(lambda x: (x, )).toDF()

или даже лучше:

from pyspark.sql import Row

row = Row("val") # Or some other column name
myFloatRdd.map(row).toDF()

Чтобы создать DataFrame из списка скаляров, вам нужно будет напрямую использовать SparkSession.createDataFrame и предоставить схему ***:

from pyspark.sql.types import FloatType

df = spark.createDataFrame([1.0, 2.0, 3.0], FloatType())

df.show()

## +-----+
## |value|
## +-----+
## |  1.0|
## |  2.0|
## |  3.0|
## +-----+

но для простого диапазона было бы лучше использовать SparkSession.range:

from pyspark.sql.functions import col

spark.range(1, 4).select(col("id").cast("double"))

* Больше не поддерживается.

** Spark SQL также предоставляет ограниченную поддержку вывода схемы для объектов Python, подвергая __dict__.

*** Поддерживается только в Spark 2.0 или новее.