3. 将CanData类型的RDD转成键值对RDD,key是“车型_车架号”,value是1
6.用filter算子将车型为E100的10辆车的每辆总数量输出到控制台
- 了解普通RDD和键值对RDD的区别
- 理解filter、mapToPair、groupByKey转换算子的作用,并能应用到具体业务场景中
- 在此次任务中需要准备相应的json文件以及spark环境的搭建
提示:以下是本篇文章正文内容,下面案例可供参考
一、spark统计每辆车上传的总数据量
1.读入数据,数据的获取是必不可少的
代码如下(示例):
import com.google.gson.Gson;
import com.lzzy.mk2_2.CanData;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.api.java.function.PairFunction;
import scala.Tuple2;
import java.util.List;
public static void main(String[] args) {
SparkConf sparkConf = new SparkConf().setAppName("Module2Task3").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
// 读文件,得到RDD
JavaRDD<String> srcRdd = sc.textFile("D:\\spark_demo\\2023-9-27\\car.json");
2.将string转成CanData
用于筛选出满足特定条件的元素,并返回一个新的RDD。
参数:Function<T, Boolean>,该接口是函数式接口,T是它的call方法的形参类型,和RDD的元素类型一致,Boolean是call方法的返回值类型
返回值:一个新的RDD对象。
// 将string转成CanData
JavaRDD<CanData> canDataRdd = srcRdd.map(new Function<String, CanData>() {
@Override
public CanData call(String s) throws Exception {
Gson gson = new Gson();
CanData canData = gson.fromJson(s, CanData.class);
return canData;
}
}