在scala中编程实现RDD转DataFrame,实现统计每部电影的评分人数
时间: 2024-02-19 14:03:27 浏览: 77
基于Scala的Spark RDD、Spark SQL、Spark Streaming相关Demo设计源码
可以按照以下步骤实现:
1. 创建一个 RDD,包含电影ID和评分信息:
```
val ratingsRDD = sc.textFile("ratings.csv").map(line => {
val fields = line.split(",")
(fields(1).toInt, fields(2).toDouble)
})
```
2. 导入 Spark SQL 相关的库,并将 RDD 转换为 DataFrame:
```
import org.apache.spark.sql.{Row, SparkSession}
import org.apache.spark.sql.types._
val spark = SparkSession.builder().appName("RDD to DataFrame").getOrCreate()
val schema = StructType(
StructField("movieId", IntegerType, true) ::
StructField("rating", DoubleType, true) :: Nil
)
val ratingsDF = spark.createDataFrame(ratingsRDD.map(r => Row(r._1, r._2)), schema)
```
3. 使用 DataFrame API 进行统计:
```
import org.apache.spark.sql.functions._
val countDF = ratingsDF.groupBy("movieId").agg(count("rating").as("numRatings"))
```
这将按电影ID对评分信息进行分组,并计算每部电影的评分人数。
阅读全文