首页 > 其他分享 >Spark 01 WorkCount

Spark 01 WorkCount

时间:2024-09-14 22:02:43浏览次数:11  
标签:01 -- WorkCount apache org spark Spark

安装 Spark

安装 Java 8+: https://spark.apache.org/docs/latest/index.html

安装 Spark: https://spark.apache.org/downloads.html

 ./spark-shell --version

代码

Spark 依赖: https://spark.apache.org/docs/latest/quick-start.html#self-contained-applications

        <dependency> <!-- Spark dependency -->
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>3.5.2</version>
            <scope>provided</scope>
        </dependency>

https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/JavaWordCount.java

统计单词代码

/**
 * SPARK_HOME=/Users/liaozibo/app/spark-3.5.2-bin-hadoop3
 * $SPARK_HOME/bin/spark-submit --class "WorkCount" --master "local[*]" target/spark-demo-1.0-SNAPSHOT.jar
 * */
public class WorkCount {
    public static void main(String[] args) {
        SparkSession spark = SparkSession.builder()
                .getOrCreate();
        JavaRDD<String> lineRdd = spark.read().textFile("/Users/liaozibo/code/demo/spark-demo/spark-wiki.txt").javaRDD();
        JavaRDD<String> wordRdd = lineRdd.flatMap(line -> Arrays.asList(line.split(" ")).iterator());
        JavaRDD<String> cleanWordRdd = wordRdd.filter(word -> !word.trim().isEmpty());
        List<Tuple2<Integer, String>> top5 = cleanWordRdd.mapToPair(word -> new Tuple2<>(word, 1))
                .reduceByKey(Integer::sum) // 按Key统计
                .mapToPair(Tuple2::swap)
                .sortByKey(false) // 按Key排序
                .take(5);
        top5.forEach(System.out::println);
        spark.stop();
    }
}

执行

打包代码 mvn package

执行代码

SPARK_HOME=/Users/liaozibo/app/spark-3.5.2-bin-hadoop3
$SPARK_HOME/bin/spark-submit --class "WorkCount" --master "local[*]" target/spark-demo-1.0-SNAPSHOT.jar

标签:01,--,WorkCount,apache,org,spark,Spark
From: https://www.cnblogs.com/liaozibo/p/18397388

相关文章

  • 实战13-搜索模块滑动效果01
    import{getHomeDataApi}from'../api/home';import{BannerListDataSource,INavList,IPlanList,ITitleList}from'../api/models/HomeData';importSwiperLayoutfrom'../views/Home/SwiperLayout';import{window}from'......
  • [安洵杯 2019]easy_web
    首先抓包可以看到img是一个base64编码依次经过base64,base64,asciihex解码得到一个图片名555.png那么我们可以利用这一点反过去看index.php的源码,修改头img=TmprMlpUWTBOalUzT0RKbE56QTJPRGN3最后经过base64解码后<?phperror_reporting(E_ALL||~E_NOTICE);header('con......
  • 201 Introducing Mutations - A Better Way of Changing Data
    在Vue中,Mutations是Vuex状态管理模式中的重要组成部分。Mutations主要用于更改Vuex中的状态。它提供了一种集中且规范的方式来修改应用的全局状态数据。每个Mutation都是一个函数,函数接收当前的状态作为第一个参数,通过对状态的直接修改来实现状态的变更。Mutatio......
  • MAST20018 – Discrete Mathematics and Operations Research
    MAST20018 – Discrete Mathematics and Operations ResearchAssignment 3Upload to Gradescope by 5pm Wed 18th September 2024Question 1In assignment 1, you considered the following project with 8 activities, labelled A to H:......
  • 【csp201912-2】回收站选址
    题目背景 开学了,可是校园里堆积了不少垃圾杂物。 热心的同学们纷纷自发前来清理,为学校注入正能量~题目描述通过无人机航拍我们已经知晓了n处尚待清理的垃圾位置,其中第i(1≤i≤n)处的坐标为(x,y),保证所有的坐标均为整数。我们希望在垃圾集中的地方建立些回收站。具体来说,对......
  • Java 与大数据:Hadoop 和 Spark 的完美集成
    ......
  • 合宙Air201资产定位模组LuatOS课程:GPS/LBS/Wi-Fi定位
    已经推出3期课程啦:helloworld、点灯、远程控制,小伙伴们是不是收获满满,期待更高阶的应用呢?本期,我们将学习合宙Air201的核心功能之一——定位功能!Air201定位示例教程  合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放......
  • TiDB 数据库核心原理与架构_Lesson 01 TiDB 数据库架构概述课程整理
    作者:尚雷5580注:本文基于TiDB官网董菲老师《TiDB数据库核心原理与架构(101)》系列教程之《Lesson01TiDB数据库架构概述》内容进行整理和补充。一、TiDB体系架构1.1TiDB五大核心特性一键水平扩缩容得益于存储与计算分离的架构,TiDB支持按需对计算和存储进行在线扩......
  • 3ds Max 2018 进阶快捷键操作笔记
    1.视图与界面控制Alt+W:切换当前视口最大化。工作时常需要在多个视口之间切换,该快捷键帮助快速专注于某一视口细节。F3:切换线框模式与实体模式。方便随时观察模型的结构和表面,特别是在检查复杂几何形状时非常有用。F4:显示网格边缘。在实体模式下显示线框,常用于优化模型的......
  • 合宙Air201模组LuatOS:点灯仪式
    上一期教程,我们学习了合宙Air201helloworld,很多小伙伴有了初步了解,接下来,推出第二篇:你将体验工程师的重要仪式——点灯!Air201点灯教程  合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。......