用java编写spark程序,简单示例及运行

本文介绍了使用Java编写Spark程序的基础示例,包括环境配置(hadoop 2.2.0, spark-0.9.0, scala-2.10.3, jdk1.7)和程序编写。通过简单的测试代码,展示了如何在Linux环境下打包上传并执行Spark程序,最终得到运行结果。" 127374040,15718730,SSM框架下大悦城电竞赛事管理系统设计与实现,"['Java', 'SSM框架', 'Mybatis', '毕业设计', '电竞管理']
摘要由CSDN通过智能技术生成

最近因为工作需要,研究了下spark,因为scala还不熟,所以先学习了java的spark程序写法,下面是我的简单测试程序的代码,大部分函数的用法已在注释里面注明。


我的环境:hadoop 2.2.0

                   spark-0.9.0

                   scala-2.10.3

                   jdk1.7



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


import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;


public final class mysparktest {


    public static void main(String[] args) throws Exception {


       //context ,用于读文件 ,类似于scala的sc
       //格式为:
       // JavaSparkContext(master: String, appName: String, sparkHome: String, jars: Array[String], environment: Map[String, String])
        JavaSparkContext ctx = new JavaSparkContext("yarn-standalone", "JavaWordCount",
                System.getenv("SPARK_HOME"), JavaSparkContext.jarOfClass(mysparktest.class));


        //也可以使用ctx获取环境变量,例如下面的语句
        System.out.println("spark home:"+ctx.getSparkHome());






         //一次一行,String类型    ,还有hadoopfile,sequenceFile什么的  ,可以直接用sc.textFile("path")
        JavaRDD<String> lines = ctx.textFile(args[1], 1);  //java.lang.String path, int minSplits
        lines.cache();   //cache,暂时放在缓存中,一般用于哪些可能需要多次使用的RDD,据说这样会减少运行时间


        //collect方法,用于将RDD类型转化为java基本类型,如下
        List<String> line = lines.collect();
        for(String val:line)
                System.out.println(val);


       //下面这些也是RDD的常用函数
       // lines.collect();  List<String>
       // lines.union();     javaRDD<String>
       // lines.top(1);     List<String>
       // lines.count();      long
       // lines.countByValue();


        /**
         *   filter test
         *   定义一个返回bool类型的函数,spark运行filter的时候会过滤掉那些返回只为false的数据
         *   String s,中的变量s可以认为就是变量lines(lines可以理解为一系列的String类型数据)的每一条数据
         */
        JavaRDD<String> contaninsE = lines.filter(new Function<String, Boolean>() {
            &
  • 6
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值