你的代码中有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|
+------+----+----+
内容来源于网络,如有侵权,请联系作者删除!