准备工作:启动hdfs集群,打开hadoop100:9870,在wcinput目录下上传一个包含很多个单词的文本文件。

写交互式代码:启动之后在spark-shell中写代码。

进入环境:spark-shell --master yarn

逐句写代码:

// 读取文件,得到RDD

    val rdd1 = sc.textFile("hdfs://hadoop100:8020/wcinput/words.txt")

    // 将单词进行切割,得到一个存储全部单词的RDD

    val rdd2= fileRDD.flatMap(line => line.split(" "))

    // 将单词转换为元组对象,key是单词,value是数字1

    val rdd3= wordsRDD.map(word => (word, 1))

    // 将元组的value按照key来分组,对所有的value执行聚合操作(相加)

    val rdd4= wordsWithOneRDD.reduceByKey((a, b) => a + b)

    // 收集RDD的数据并打印输出结果

    rdd4.collect().foreach(println)

RDD的执行过程

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐