Spark如何把RDD转换为DataFrame?

x33g5p2x  于2020-12-12 发布在 Spark  
字(1.0k)|赞(0)|评价(0)|浏览(340)

你的代码中有RDD,现在你想在Spark中使用DataFrames来处理数据。Spark为您提供了将RDD转换为DataFrames的功能,而且非常简单。

解决方法
您可以使用创建 DataFrame 函数,该函数接收 RDD 并返回一个 DataFrame。

假设下面是你 RDD 中的数据。

+------+----+----+ 
| blue| 20.0| 60.0| 
|green| 30.5| 20.0| 
|  red| 70.0| 50.9| 
+------+----+----+

无列名
你可以看到,输出的数据没有有意义的列名。

val df = spark.createDataFrame(rdd)

df.show()

+------+----+----+ 
|  _1	| _2  | _3 |
+------+----+----+ 
| blue| 20.0| 60.0| 
|green| 30.5| 20.0| 
|  red| 70.0| 50.9| 
+------+----+----+

有列名
在下面的例子中,你指定了列,但Spark仍然会推断出你的列的模式--数据类型。

val df1 = spark.createDataFrame(rdd).toDF("id", "val1", “val2”)

df1.show()

+------+----+----+ 
|  id | val1| val2|
+------+----+----+ 
| blue| 20.0| 60.0| 
|green| 30.5| 20.0| 
|  red| 70.0| 50.9| 
+------+----+----+
 

有了适当的模式

val schema = new StructType()
.add(StructField("id", StringType, true))
.add(StructField("val1", DoubleType, true))
.add(StructField("val2", DoubleType, true))

val df2 = spark.createDataFrame(rdd, schema)

df2.show()

+------+----+----+ 
|  id | val1| val2|
+------+----+----+ 
| blue| 20.0| 60.0| 
|green| 30.5| 20.0| 
|  red| 70.0| 50.9| 
+------+----+----+

相关文章

热门文章

更多