您的位置:首页 > 编程语言 > Java开发

在ubuntu中使用java版的spark

2016-08-25 18:28 351 查看

前言

我在使用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中导入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块买了下来(心有点痛..)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu java spark