spark入门使用(java)

官方文档:https://spark.apache.org/docs/latest/api/java/index.html

导入依赖

创建maven项目并导入依赖,注意spark的版本

		<!--spark的核心依赖-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>2.4.4</version>
        </dependency>
		<!---spark-sql分析-->
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_2.12</artifactId>
            <version>2.4.4</version>
        </dependency>

java操作spark入门使用

创建一个java程序,编写代码

JavaSparkContext来连接

 //初识spark
    private static void hello() {
//        创建spark入口对象,在本地运行使用local
        JavaSparkContext sc=new JavaSparkContext("local","hello");
        List<Integer> x=new ArrayList<Integer>();
        x.add(1);
        x.add(5);
        x.add(3);
//        获取并行集合
        JavaRDD<Integer> rdd = sc.parallelize(x);
        //把集合中的每一个元素+1
        JavaRDD<Integer> a = rdd.map(y -> y + 1);
        //执行计算
        System.out.println(a.collect());
    }

从外部文件中操作rdd

在项目下创建data目录,并新建a.csv文件

image-20210221101610009

private static void rdd2() {
        // 1.创建spark入口对象
        JavaSparkContext sc=new JavaSparkContext("local","hello");
        //2.读取外部文件创建rdd,以字符串读取
        JavaRDD<String> rdd = sc.textFile("data/a.csv");
				//3.把文件内容使用,分割
        JavaRDD<String[]> a = rdd.map(x -> x.split(","));
        System.out.println(a.collect());
        sc.stop();
    }
//运行会得到割后的数组
//优化后
public static void rdd2() {
        //        创建spark入口对象
        JavaSparkContext sc=new JavaSparkContext("local","hello");
        //读取外部文件创建rdd
        JavaRDD<String> rdd = sc.textFile("data/a.csv");
//        把文件内容使用,分割
        JavaRDD<String[]> a = rdd.map(x -> x.split(","));
        List<String[]> list = a.collect();
        for(String[] num: list){
            for(String i : num){
                System.out.println(i);
            }
        }
        System.out.println(a.collect());
        sc.stop();
    }

去重操作

 //去重
    private static void repeat() {
        //设置账号
        System.setProperty("HADOOP_USER_NAME","root");
        //        创建spark入口对象
        JavaSparkContext sc=new JavaSparkContext("local","hello");
        JavaRDD<String> rdd = sc.textFile("data/data.csv");
        //唯一化,调用去重
        JavaRDD<String> a = rdd.distinct();
        //保存文件到HDFS
      	//saveAsTextFile("");指定保存路径,默认当前项目下创建,也可指定服务器上的文件
      //        a.saveAsTextFile("out");
        a.saveAsTextFile("hdfs://master:9000/spk/out");
        System.out.println(a.collect());
        sc.stop();

    }

在服务器上运行

在idea这种写好程序并进行打包

mvn clean package

把jar包上传到服务器上

然后打包运行

spark-submit --master spark://master:7077 --class 程序全名 jar包名
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐