在ubuntu中使用java版的spark

本文介绍在Ubuntu系统中安装Eclipse并配置Java Spark环境的过程。通过具体实例演示了如何利用Java API进行Spark开发,包括创建Spark上下文、读取文件及执行基本的数据处理任务。

前言

我在使用java版的spark之前,在ubuntu上安装了python版的spark.换而言之,我已经搭建好了spark的相关环境,例如scala,hadoop等.具体的可以查看我师弟的博客哈
http://www.cnblogs.com/adienhsuan/p/5654484.html
里面也有提供一些关于pyspark的使用,我主要讲述的是如何使用java的spark.

安装eclipse

ubuntu下安装eclipse十分方便,不要自己去下载eclipse IDE, eclipse adt的东西,只需在终端输入sudo apt-get install eclipse-platform, 便是一键安装,然后在这里便可以找到啦
eclipse

在eclipse中导入spark的jar包

之前配置python的spark下载了一个spark-1.6.2-bin-hadoop2.6,里面在lib目录下有很多jar包,其实是为java的spark开发而用的.我们需要导入的是spark-assembly-1.6.2-hadoop2.6.0.千万不要贪多,把所有的都导入,这样你的eclipse会不能承受之重(本人亲身的惨痛教训)
这里写图片描述
关于如何在eclipse中导包,可以参照这一份博客:
http://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html

编写一个统计文件中的字符个数的代码程序

import org.apache.spark.SparkConf;
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.Function2;




public class test {
    public static void main(String[] arg){
        SparkConf conf = new SparkConf();
        conf.set("spark.testing.memory","2147480000");  // spark的运行配置,意指占用内存2G
        JavaSparkContext sc = new JavaSparkContext("local[*]", "Spark", conf);      //第一个参数为本地模式,[*]尽可能地获取多的cpu;第二个是spark应用程序名,可以任意取;第三个为配置文件
        JavaRDD<String> lines = sc.textFile("/home/quincy1994/forwork/SparkComment/pinglun.txt");       //读入外部文件,文件可以是scv, txt,md格式
        JavaRDD<Integer> lineLengths = lines.map((Function<String,Integer>)new GetLength());    //map为映射,spark的转化操作;Function第一类函数,即单一映射,单进单出
        int totalLength = lineLengths.reduce((Function2<Integer, Integer, Integer>)new Sum());
        System.out.println("total length: " + totalLength);
    }
    static class GetLength implements Function<String, Integer>{
        /*
         *  获取每一行的字符个数
         * @see org.apache.spark.api.java.function.Function#call(java.lang.Object)
         */
        public Integer call(String s){
            return s.length();
        }
    }
    static class Sum implements Function2<Integer, Integer, Integer>{
        /*
         * 聚合函数,相对于相加操作
         * @see org.apache.spark.api.java.function.Function2#call(java.lang.Object, java.lang.Object)
         */
        public Integer call(Integer a, Integer b){
            return a + b;
        }
    }
}

运行结果如下:
这里写图片描述

关于spark的学习资料

我觉得有两本书挺不错的,值得推荐一下:
一本是<spark快速大数据分析>,里面有spark的scala , java , python编程,相对于入门很有帮助
另一本是<深入理解spark:核心思想与源码分析>,这是阿里巴巴的技术女神写的,里面谈的基本上是java,当时一时激动,在京东花了85块买了下来(心有点痛..)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值