idea-spark编程worldcount,hadoop同spark集成,搭建spark集群(forty-seven day third)

 1.创建新模块并添加maven依赖
        <?xml version="1.0" encoding="UTF-8"?>
        <project xmlns="http://maven.apache.org/POM/4.0.0"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
            <modelVersion>4.0.0</modelVersion>

            <groupId>com.oldboy</groupId>
            <artifactId>myspark</artifactId>
            <version>1.0-SNAPSHOT</version>

            <dependencies>
                <dependency>
                    <groupId>org.apache.spark</groupId>
                    <artifactId>spark-core_2.11</artifactId>
                    <version>2.1.0</version>
                </dependency>
            </dependencies>
        </project>

java版 wordcount
        package com.oldboy.bigdata.spark.java;

        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.FlatMapFunction;
        import org.apache.spark.api.java.function.Function2;
        import org.apache.spark.api.java.function.PairFunction;
        import scala.Tuple2;
        import scala.actors.threadpool.Arrays;

        import java.util.Iterator;
        import java.util.List;

        /**
         * java版单词统计
         */
        public class WordcountJava {
            public static void main(String[] args) {
                SparkConf conf = new SparkConf();
                conf.setAppName("wcJava");
                conf.setMaster("local") ;

                JavaSparkContext sc = new JavaSparkContext(conf) ;
                //1.加载文件
                JavaRDD<String> rdd1 = sc.textFile("d:\\java\\1.txt") ;

                //2.压扁
                JavaRDD<String> rdd2 = rdd1.flatMap(new FlatMapFunction<String, String>() {
                    public Iterator<String> call(String s) throws Exception {
                        String[] arr = s.split(" ");
                        return Arrays.asList(arr).iterator() ;
                    }
                }) ;

                //3.标1成对
                JavaPairRDD<String,Integer> rdd3 = rdd2.mapToPair(new PairFunction<String, String, Integer>() {
                    public Tuple2<String, Integer> call(String s) throws Exception {
                        return new Tuple2<String, Integer>(s , 1);
                    }
                }) ;

                //4.聚合
                JavaPairRDD<String,Integer> rdd4 = rdd3.reduceByKey(new Function2<Integer, Integer, Integer>() {
                    public Integer call(Integer v1, Integer v2) throws Exception {
                        return v1 + v2;
                    }
                }) ;

                //5.
                List<Tuple2<String,Integer>> list = rdd4.collect();
                for(Tuple2<String,Integer> t : list){
                    System.out.println(t._1() + " : " + t._2());
                }
            }
        }

spark-maven的依赖

    在本地仓库下寻找对应工件(artifact),没有从外网下载。
    可以直接向下载好的工件放到本地仓库相应的目录下。
    工件的坐标:
        1.groupId
            org.apache.spark
            映射到目录树 org/apache/spark
        2.artifactId
            工件id,相当于项目
            映射成一个目录
        3.version
            版本
            映射成一个目录
        4.复制对应的目录到本地仓库忙碌下
            C:\Users\Administrator\.m2\repository
        
        5.在idea中重建索引
            settings->maven->repositorys->local -> update
    
    

搭建spark集群

    0.说明
        master            //s101
        worker            //s102 ~ s104

    1.挑选4台主机
        s101 ~ s104

    2.分别安装spark
        
    3.配置spark集群
        [conf/slaves]
        s102
        s103
        s104

        [conf/spark-env.sh]
        ...
        export JAVA_HOME=/soft/jdk
        ...

    4.启动spark集群
        $>sbin/start-all.sh
    
    5.查看webui
        http://s101:8080/
    
    6.启动spark-shell连接到spark集群
        spark-shell --master spark://s101:7077
    
    7.编写程序
        val rdd1 =  sc.parallelize(Array[String]("hello world1" , "hello world2" , "hello world3"))
        rdd1.flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect


    
hadoop同spark集成

    1.停掉spark集群
        sbin/stop-all.sh

    2.在所有的spark节点的conf/目录创建core-site.xml和hdfs-site.xml软连接文件
        xcall.sh "ln -s /soft/hadoop/etc/hadoop/core-site.xml /soft/spark/conf/core-site.xml"
        xcall.sh "ln -s /soft/hadoop/etc/hadoop/hdfs-site.xml /soft/spark/conf/hdfs-site.xml"
    3.启动hdfs集群
        xzk.sh start
        start-dfs.sh
    4.启动spark
        sbin/start-all.sh

    5.在spark-shell中访问hdfs文件
        val rdd1 = sc.textFile("/user/centos/1.txt")
        ...
部署程序在spark集群上运行程序

    1.修改代码中的Master地址和文件路径等等信息
        //conf.setMaster("local")
        sc.textFile(args(0))

    2.导出jar
        配置idea的project structure -> artifacts -> + jar -> 删除第三方类库.
        
    3.部署jar到centos,执行如下命令
        
    4.上传气温数据到hdfs
        hdfs dfs -put temp3.dat data
    
    5.运行程序
        spark-submit --master spark://s101:7077 --class MaxtempScala myspark.jar /user/centos/data/temp3.dat
        spark-submit --master spark://s101:7077 --class com.oldboy.bigdata.spark.java.MaxtempJava myspark.jar /user/centos/data/temp3.dat

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值