2015-09-23 7 views

答えて

52
フードの下で使用される

SparkSession.createDataFrameは、RDD/listDataTypeのスキーマが提供されていない限り、/tuple/list/dict *またはpandas.DataFrameです。

:***あなたが直接 SparkSession.createDataFrameを使用してスキーマを提供する必要がありますスカラーのリストから DataFrameを作成するには

from pyspark.sql import Row 

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

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

またはさらに良い:このような何かを試してみてください

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はまた、__dict__を公開しているPythonオブジェクトのスキーマの推論を限定的にサポートしています。

***サポートされているのは、Spark 2.0以降のみです。

+0

私はスパークする初心者です。 'myFloatRdd.map(lambda x:(x、))。toDF()'がこの問題を解決する方法を教えてください。 'map(lambda x:(x、))'はRDDオブジェクトを行のリストに変換するだけですか? – kasa

+0

@kasa 'tuples'( - >' struct')の推論マッピングがあります。スカラーの場合はnoです。 – zero323

関連する問題