分别用Scala,Java,JavaLambda编写统计单词个数案列

这篇博客对比了使用Scala和Java(包括JavaLambda)编写统计单词个数的案例。在Scala部分,详细介绍了如何将代码打包上传到虚拟机,以及将单词元数据上传到HDFS。在提交Spark任务时,强调了需使用Spark/bin/spark-submit命令。
摘要由CSDN通过智能技术生成

Scala


import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
  * 1.创建SparkContext
  * 2.创建RDD
  * 3调用RDD的Transformation
  * 4调用Action
  * 5释放资源
  */
object Demo {
  def main(args: Array[String]): Unit = {
    val conf: SparkConf = new SparkConf().setAppName("Demo")
    //创建SparkContext,使用SparkContext来创建RDD
    val sc: SparkContext = new SparkContext(conf)
    //Spark写Spark程序,就是对抽象的神奇的大集合[RDD]编程,调用它高度密封的API
    //使用SparkContext创建RDD
    val lines: RDD[String] = sc.textFile(args(0))

    //Transformation开始//
    //切分压平
    val words: RDD[String] = lines.flatMap(_.split(" "))
    //将单词放入元组中
    val wordAndone: RDD[(String, Int)] = words.map((_, 1))
    //分组聚合,reduceByKey可以先局部聚合在全局聚合
    val reduce: RDD[(String, Int)] = wordAndone.reduceByKey(_ + _)
    //排序
    val sorte: RDD[(String, Int)] = reduce.sortBy(_._2, false)
    //Transformation 结束//
    //调用Action将计算结果保存到HDFS中
    sorte.saveAsTextFile(args(1))
    sc.stop()
  }
}

这里是上传数据到HDFS中:
1,将编写的Scala代码打包,并上传到虚拟机;
2,将单词元数据上传到HDFS中
3,提交任务这里需要注意一下:将代码指令到Spark/bin/spark-submit才可以.代码:

/spark-2.3.3-bin-hadoop2.7/bin/spark-submit (这里是指令)--master spark://qiu01:7077(Maser位置信息) --executor-memory 1g(资源配置) --total-executor-cores 4(4个核,一个worker是默认2个核) --class WorkCount.Demo(代码类的Copy Reference) /spark11-1.0-SNAPSHOT.jar(代码Jar包上传位置信息) hdfs://qiu01:9000/data/word.txt(输入文件) hdfs://qiu01:9000/data/out(输出文件)

Java



```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 java.util.Arrays;
import java.util.Iterator;

public class JavaWordCount {
    public static void main(String[] args) {
        SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount");
        //创建JavaSparkContext
        JavaSparkContext jsc = new JavaSparkContext(sparkConf);
        //使用JavaSparkContext创建RDD
        JavaRDD<String> line = jsc.textFile(args[0]);
        //调用Transformation(s)
        //切分压平
        JavaRDD<String> words = line.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public Iterator<String> call(String line) throws Exception {
                return A
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值