Ответ 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 или новее.