Spark核心编程:使用Java和Scala开发wordcount程序

Spark 的JavaWordCount分步详解 阅读详情

1.使用Java开发WordCount程序

1.在本地测试的代码如下:

package cn.spark.study.core;

import java.util.Arrays;

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 org.apache.spark.api.java.function.VoidFunction;

import scala.Tuple2;

/*
* 本地测试的Wordcount程序
*
*/
public class WordCountLocal {

public static void main(String[] args) {
    /*
     * 编写Spark应用程序,
     * 本地执行,是可以执行在ecplise中的main方法中的,
     * 
     * 第一步,创建Sparkconf对象,设置Spark应用的配置信息
     * 使用setMaster()可以设置Spark应用程序要连接的Spark集群
     * 的master节点的URL
     * 但是如果设置为local,则代表在本地运行
     */
    SparkConf conf = new SparkConf()
            .setAppName("WordCountLocal")
            .setMaster("local");
    /*
     * 第二步,创建JavaSparkContext对象
     * 在Spark中,SparkContext是Spark所有功能的一个入口,无论是用Java。还是Python,
     * 都必须要有一个SparkContext,它的主要作用,包括初始化应用程序所需的一些核心主键,包括
     * 调度器(DAGSchedule、TaskSchedule),还会去到Spark Master节点进行注册等等
     * 一句话,SparkContext是Spark应用中,可以说是最重要的一个对象
     * 但是,在Spark中,编写不同类型的Spark应用程序,使用的SparkContext是不同的,
     * 如果是使用Scala,则是使用原生的SparkContext对象
     * 如果使用Java,就是JavaSparkContext对象
     * 如果是开发Spark SQL程序,那么就是SQLContext、HiveContext
     * 如果是开发Spark Streaming程序,那么就是它独有的SparkContext
     * 如此类推
     */
    JavaSparkContext sc = new JavaSparkContext(conf);

    /*
     * 第三步,要针对输入源(HDFS文件、本地文件等等),创建一个初始的RDD
     * 输入源中的数据会打散,分配到RDD的每个partition中,从而形成一个初始的分布式的数据集
     * 在这里,因为是本地测试,所以呢,就是针对本地文件
     * SparkContext中,用于根据文件类型的输入源创建RDD的方法,叫做textFile()方法
     * 在Java中,创建的普通RDD,都叫做JavaRDD
     * 在这里,RDD中有元素这种概念,如果是HDFS或者本地文件,创建的RDD,每一个元素就是相当文件
     * 的一行
     */
    JavaRDD<String> lines = sc.textFile("G://SparkDevel//test//wordCount//data//spark.txt");

    /*
     * 第四步,对初始RDD进行transformation操作,就是一些计算操作
     * 通常操作会通过创建function,并配合RDD的map、flatMap等算子来执行function,
     * 通常,如果比较简单,则创建指定Function的匿名内部类,
     * 但是如果function比较复杂,则会单独创建一个类,作为实现这个function接口的类
     * 
     * 先将每一行拆分成单个的单词
     * FlatMapFunction,有两个泛型参数,分别代表了输入和输出类型
     * 在这里,输入肯定是String,因为是一行一行的文本,输出,其实也是String,因为是每一行的文本
     * flatMap算子的作用,其实就是,将RDD的一个元素,给拆分成一个或多个元素
     */
    JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

        private static final long serialVersionUID = 1L;
        @Override
        public Iterable<String> call(String line) throws Exception {
            return Arrays.asList(line.split(" "));
        }
    });

    /*
     * 接着,需要将每一个单词,映射为(单词,1)的这种格式
     * 因为只有这样,后面才能根据单词作为key,来进行每个单词的出现次数的累加mapToPair,其实就是将每个元素,
     * 映射为一个(v1,v2)这样的Tuple2类型的元素
     * tuple2就是Scala类型,包含了两个值
     * mapToPair这个算子,要求的是与PairFunction配合使用,第一个泛型参数代表输入了类型
     * 第二个和第三个泛型参数,代表的输出的Tuple2的一个值和第二个值得类型
     * JavaPairRDD的两个泛型参数,分别代表了tuple元素的第一个值和第二个值得类型
     */
    JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Tuple2<String, Integer> call(String word) throws Exception {

            return new Tuple2<String, Integer>(word, 1);
        }

    });

    /*
     * 需要以单词作为key,统计每个单词出现的次数
     * 这里要使用reduceBykey这个算子,对每个key对应的value,都进行reduce操作
     * 比如JavaPairRDD中有几个元素,分别为(hello,1)(world,1)
     * reduce操作,相当于把第一个值和第二个值进行计算,让后将结果与第三个值进行计算
     * 最后返回的JavaPairRDD中的元素,也是tuple,但是第一个值就是每个key,第二个值就是
     * key的value,reduce之后的结果,相当于每个单词出现的次数
     * Function2函数的前两个参数是输入类型,后一个参数是输出类型
     */
    JavaPairRDD<String, Integer>wordCounts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {


        private static final long serialVersionUID = 1L;

        @Override
        public Integer call(Integer v1, Integer v2) throws Exception {
            return v1 + v2;
        }
    });

    /*
     * 我们通过几个Spark算子操作,已经统计出了单词的次数
     * 但是,之前我们使用的flatMap、mapToPair、reduceByKey这种操作,都叫做transformation操作
     * 一个Spark应用中,光是有transformation操作,都不行的,是不会执行,必须要有一种叫做action
     * 接着,最后,可以使用一种叫做action操作,比如说,foreach,老触发程序的执行
     */
    wordCounts.foreach(new VoidFunction<Tuple2<String,Integer>>() {

        private static final long serialVersionUID = 1L;

        @Override
        public void call(Tuple2<String, Integer> wordCount) throws Exception {
            System.out.println(wordCount._1 + " appeared " + wordCount._2 + "times.");

        }
    });
    sc.close();
}

}

2.在spark集群上跑的代码:

package cn.spark.study.core;

import java.util.Arrays;

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 org.apache.spark.api.java.function.VoidFunction;

import scala.Tuple2;
/*
* 将Java开发的wordCount程序部署到spark集群上运行
*/
public class WordCountCluster {

public static void main(String[] args) {
    /*
     * 如果要在spark集群上运行,需要修改的只有两个地方
     * 第一个,将SparkConf的setMaster()方法给删除,默认它会自己连接
     * 第二,我们针对的不是本地文件,要修改Hadoop hdfs上的真正数据源
     * 
     * 实际执行步骤:
     * 1.将数据文件(spark.txt)上传到HDFS上
     * 2.使用我们最早在pox.xml里配置的maven插件,对spark工程进行打包
     * 3.将打包后的spark工程jar包,上传到集群上执行
     * 4. 编写spark-submit脚本
     * 5.执行spark-submit脚本,提交spark应用到集群执行
     */
    SparkConf conf = new SparkConf()
            .setAppName("WordCountCluster");

    JavaSparkContext sc = new JavaSparkContext(conf);

    JavaRDD<String> lines = sc.textFile("hdfs://spark1:9000/data/input/spark.txt");

    JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {

        private static final long serialVersionUID = 1L;
        @Override
        public Iterable<String> call(String line) throws Exception {
            return Arrays.asList(line.split(" "));
        }
    });


    JavaPairRDD<String, Integer> pairs = words.mapToPair(new PairFunction<String, String, Integer>() {

        private static final long serialVersionUID = 1L;

        @Override
        public Tuple2<String, Integer> call(String word) throws Exception {

            return new Tuple2<String, Integer>(word, 1);
        }

    });


    JavaPairRDD<String, Integer>wordCounts = pairs.reduceByKey(new Function2<Integer, Integer, Integer>() {


        private static final long serialVersionUID = 1L;

        @Override
        public Integer call(Integer v1, Integer v2) throws Exception {
            return v1 + v2;
        }
    });

    /*
     * 我们通过几个Spark算子操作,已经统计出了单词的次数
     * 但是,之前我们使用的flatMap、mapToPair、reduceByKey这种操作,都叫做transformation操作
     * 一个Spark应用中,光是有transformation操作,都不行的,是不会执行,必须要有一种叫做action
     * 接着,最后,可以使用一种叫做action操作,比如说,foreach,老触发程序的执行
     */
    wordCounts.foreach(new VoidFunction<Tuple2<String,Integer>>() {

        private static final long serialVersionUID = 1L;

        @Override
        public void call(Tuple2<String, Integer> wordCount) throws Exception {
            System.out.println(wordCount._1 + " appeared " + wordCount._2 + "times.");

        }
    });
    sc.close();
}

}

在spark集群中跑的shell脚本文件wordCount.sh(local模式):

/usr/local/spark/bin/spark-submit \
–class cn.spark.study.core.WordCountCluster \
–num-executors 3 \
–driver-memory 100m \
–executor-memory 100m \
–executor-cores 3 \ /mnt/sparkDevel/java/wordCount/spark-study-java-0.0.1-SNAPSHOT-jar-with-dependencies.jar \

其中

spark-study-java-0.0.1-SNAPSHOT-jar-with-dependencies.jar是从Java工程中导出的jar包
如果是用standlone模式或者其他模式,需要加–master参数:
–master spark://masterIp:7077(standlone模式)
–master yarn-cluster(yarn cluster模式)
–master yarn-client(yarn client模式)
一般训练时,虚拟机上的Memory并不是很高,所以local模式比较方便

注意:本人用的软件是:

hadoop-2.4.1

spark-1.3.0-bin-hadoop2.4

maven工程中的pom.xml配置信息:

2.使用Scala开发WordCount程序

1.在spark集群跑的代码:

package cn.spark.study.core

import scala.tools.scalap.Main
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext

object WordCount{
def main(args: Array[String]){
val conf = new SparkConf()
.setAppName(“WordCount”)
val sc = new SparkContext(conf)
val lines = sc.textFile(“hdfs://spark1:9000/data/input/spark.txt”, 1)

val words = lines.flatMap(_.split(" "))
val pairs = words.map((_,1))
val wordCounts = pairs.reduceByKey(_ + _)

wordCounts.foreach(wordCount => println(wordCount._1 + " appeared " + wordCount._2 + " times."))  

}
}

3.WordCount程序原理深度剖析

这里写图片描述

Spark第一个程序开发 wordcount 这里介绍了程序运行在本地模式和Standalone模式两种方式package com.spark.appimport org.apache.spark.{SparkContext, SparkConf}/** * Created by Administrator on 2016/7/24 0024. */ object WordCount { def main(args: Array[S 阅读详情

相关推荐

Spark的安装和使用方法

1. 安装Spark 2. 在Spark shell中运行代码 Spark Shell本身就是一个Driver,Driver包mian()和分布式数据集。 启动Spark Shell 命令: ./bin/spark-shell --master <master-url> Spark的运行模式取决于传递给SparkContext的Master URL的值,可以有如下选择: 1. local 使用一个Worker线程来本地化运行Spark,非并行。 2. local[*] 使用

MusicDancing的博客 5746

用Spark写一个简单的wordcount词频统计程序

public class WordCountLocal {public static void main(String[] args) {SparkConf conf = new SparkConf().setAppName("WordCountLocal").setMaster("local[2]");JavaSparkContext sc = new Jav...

weixin_33805743的博客 1031

配置 NVIDIA RTX 5090 + sm_120 + flashattention,已跑通一个大模型 ~~

本文介绍了在Ubuntu 22.04系统下为NVIDIA RTX 50系显卡搭建深度学习环境的完整流程。重点包括:1)安装适配50系显卡(sm_120架构)的CUDA 12.9驱动和Toolkit,需注意禁用系统自带驱动;2)配置环境变量解决nvcc命令识别问题;3)通过源码编译方式安装支持sm_120的PyTorch nightly版本(cu129),解决官方二进制包不兼容问题。整个过程涉及显卡驱动安装、CUDA环境配置、PyTorch适配等关键步骤,并提供了详细的验证方法和常见问题解决方案。文中特别强调

qq_36674060的博客 6160

Spark - 介绍及使用 Scala、Java、Python 三种语言演示

分布式机器学习的框架,可以使用许多常见的机器学习和统计算法,例如:支持向量机、 回归、 线性回归、 逻辑回归、 决策树、 朴素贝叶斯、汇总统计、相关性、分层抽样、 假设检定、随即数据生成等,简化大规模机器学习。的快速调度能力来运行流分析,通过时间窗口截取小批量的数据并可以对之运行。类似,Spark 也有本地模式,和线上集群模式,不过不同的是,是一个快速的,多用途的集群计算系统, 相对于。当然现在有了更为发展趋势,更好处理流式数据的。的基础,,提供了分布式任务调度和基本的。的数据抽象化的概念,提供了在。

小毕超博客 3600

ESD 防护深度解析:模型、等级、系统设计与防护策略

本文系统阐述了静电放电(ESD)防护的核心技术体系。首先对比分析了HBM(人体模型)和CDM(充电设备模型)两种基础ESD模型的物理特性、测试标准及分级要求,指出相同电压下CDM的破坏性是HBM的15-20倍。其次详细解析了IEC61000-4-2系统级ESD标准,包括接触/空气放电测试方法及判定等级。重点提出了系统级防护的三层架构:空间隔离(≥10mm间距)、电气隔离(地平面分割)和TVS管选型(响应时间<1ns),并对比了MOV、SCR等防护器件特性。针对不同应用场景(消费电子、工业控制等)给出了差异化

bother3000的博客 1882

Linux单独编译设备树,开发者分享 | Petalinux 工程中设备树的介绍

本文来自XILINX嵌入式产品应用工程师 Terry Ni设备树是 Petalinux kernel 的关键组件,接下来以 2020.1 版本为例,为大家介绍一下在Xilinx Petalinux 工程中的设备树是如何产生,配置以及修改的。Petalinux 工程中设备树的位置当我们创建了一个 petalinux 工程后(以zcu102为例),在编译的时候,会自动生成对应的设备树文件。这些设备树的...

weixin_28877107的博客 2592

Spark入门-Java实现WordCount并打包测试

一、Java代码实现WordCount 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; imp

Horsleyli的博客 985

人工智能技术基础系列之:迁移学习

作者:禅与计算机程序设计艺术 1.背景介绍 随着深度学习和神经网络的快速发展,越来越多的应用场景需要处理大量的数据和复杂的任务。然而,由于计算资源、存储空间等条件的限制,传统的人工智能方法往往不能满足实际需求。因此,为了提高效率和降低成本,研究人员提出了迁移学习的概念。本篇文章将详细介绍迁移学习的基

AI天才研究院 699

干货来袭!spark开发用java还是scala

ActiveMQ 我们先看ActiveMQ。其实一般早些的项目需要引入消息中间件,都是使用的这个MQ,但是现在用的确实不多了,说白了就是有些过时了。我们去它的官网看一看,你会发现官网已经不活跃了,好久才会更新一次。 它的单机吞吐量是万级,一些小的项目已经够用了,但对于高并发的互联网项目完全不够看。 在高可用上,使用的主从架构的实现。 在消息可靠性上,有较低的概率会丢失数据。 综合以上,其实这个产品基本可以弃用掉了,我们完全可以使用RabbitMQ来代替它。 RabbitMQ rabbitMQ出现后,国内大部

m0_58591044的博客 2926

手把手教你学simulink(42.1)--储能系统场景示例:基于Simulink的电池+超级电容器混合储能系统

混合储能系统(HESS)结合了电池和超级电容器的优点,能够在满足高功率需求的同时提供较长的持续放电时间。这种组合特别适合用于电动汽车、可再生能源发电系统、电网频率调节等应用场景。本项目将详细介绍如何在MATLAB/Simulink中搭建一个完整的基于电池和超级电容器的混合储能系统,并提供具体的代码实现和设计步骤。如果你需要实现更复杂的控制逻辑,可以使用MATLAB Function模块。以下是一个简单的例子,展示了如何在该模块中实现一个条件逻辑,以分配电池和超级电容器的充放电任务。Matlab。

MHD0815的博客 543

【软件系统架构】系列四:嵌入式技术

嵌入式系统是以应用为中心、以计算机技术为基础,并将可配置与可裁剪的软硬件集成于一体的专用计算机系统。它需要满足功能、可靠性、成本、体积、功耗等方面的严格要求。 嵌入式系统一般由以下组成部分构成:

moton2017的博客 999

第三章、Spark核心编程 — 使用Java、Scala开发WordCount程序

一、开发WordCount程序 Java示例代码 package com.lj.sparkcore; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.a...

XuanAlex的博客 331

第42章:AI代码生成的质量标准——何时用AI、何时自己写

> - AI代码生成的质量分级标准:可用、稳定、安全、优雅 > - 一个决策矩阵:什么场景适合用AI,什么场景必须人工编写 > - 如何评估AI生成的代码质量(复杂度、可读性、安全性) > - 实战对比:同一需求下AI生成代码 vs 人工编写代码 > - 团队落地:将质量标准集成到Code Review和CI流程 > - 我如何将团队AI代码接受率从70%提升到90%

sfishfly的博客 161

18、Spark核心编程之使用Java、Scala开发wordcount程序

使用Java开发Spark程序 配置Maven环境 使用Java开发WordCount1.png   使用Java开发WordCount2.png   使用Java开发WordCount3.png   使用Java开发WordCount4.png   配置pom.xml文件 &lt;dependencies&gt; &lt;dependenc...

ZJ__ZFH的博客 1411

1. 动手开发第一个 SAP CDS View

在开始学习前,大家需要根据这篇文章介绍的步骤,在自己本地电脑上,把 ABAP Development Tool 安装好。右键单击这个添加好的 ABAP 开发包,选择新建一个 ABAP Repository Object,类型就选择。,就可以像在 SAPGUI 里使用 SE16 那样,查看这个 CDS View 的内容。笔者下一篇文章,会详细介绍我们创建的第一个 CDS View 的每一行代码的详细含义。从本文开始,正式进入 CDS View 开发的学习。的条件,然后点击 Run 重新执行,得到结果。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1271

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Spark核心编程01-基础代码

spark 相关操作函数案例简介

风一样 222

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spark实战----(1)使用Scala开发本地测试的Spark WordCount程序

第一步:JDk的安装 第二步:Scala的安装 鉴于以上两步较为简单,不再详细赘述 第三步:去Spark官方网站下载Spark包 我下载的文件名是spark-1.6.2-bin-hadoop2.6          点击DownLoad就可以下载了,下载完并解压 第四步:IDE选择 我用的是 intellij IDEA ,不过我学习的时候用的是Scala for Ecl

太匆匆 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Spark学习之路(五):使用Java和Scala编写按词频降序排序的WordCount程序

内容简介一、按词频降序排序的WordCount思路分析二、使用Java编写程序三、使用Scala编写程序四、总结 一、按词频降序排序的WordCount思路分析 WordCount,也叫词频统计程序是大数据里面一个最简单的入门程序,但是“麻雀虽小,五脏俱全”,WordCount涵盖了大数据处理的核心思想,因而非常之重要。而加入了排序功能之后的WordCount就更加具有价值了。现在分析按词频降序...

萧邦主的城邦 1440

二、Spark 开发环境搭建 IDEA + Maven 及 WordCount 案例实战

想在自己的电脑上写Spark程序,第一步就是搭好开发环境。这次我会手把手带你在IDEA里完成所有设置:从创建Maven项目、配置好与Spark版本匹配的Scala,到在pom.xml里添加核心依赖。它还专门解决了两个常见“拦路虎”:配置log4j来减少日志刷屏,以及搞定Windows环境下特有的winutils.exe问题。跟着走完,你就能成功跑起一个WordCount,顺利迈出Spark开发的第一步。

专注于 Agent 工程、AI 产品、Harness Engineering、LLM 算法等方向,OpenMathModel、Nivik 等开源项目作者 7万+

Spark学习笔记:Spark基础

Spark基础以及WordCount实现

lrxcmwy2的博客 1万+

Spark Core学习笔记1:使用Java、Scala开发wordcount

使用Java、Scala开发wordcount 1.Java版本wordcount 编写Spark应用程序,本地执行是可以使用eclipse中的main方法运行的。开发应用程序步骤如下 **第1步:**创建SparkConf对象,设置Spark应用配置信息。使用setMaster()可设置Spark应用程序要连接的Spark集群的master节点的url,但是如果设置为local则代表在本地执行 SparkConf conf = new SparkConf() .setAppName("Word

一壶清茶的专栏 526

Spark内容分享(三):Spark - 介绍及使用 Scala、Java、Python 三种语言演示

分布式机器学习的框架,可以使用许多常见的机器学习和统计算法,例如:支持向量机、 回归、 线性回归、 逻辑回归、 决策树、 朴素贝叶斯、汇总统计、相关性、分层抽样、 假设检定、随机数据生成等,简化大规模机器学习。的快速调度能力来运行流分析,通过时间窗口截取小批量的数据并可以对之运行。类似,Spark 也有本地模式,和线上集群模式,不过不同的是,是一个快速的,多用途的集群计算系统, 相对于。当然现在有了更为发展趋势,更好处理流式数据的。的基础,,提供了分布式任务调度和基本的。的数据抽象化的概念,提供了在。

之乎者也·的博客 1602

史上最简单的spark教程第二章-快速开发部署你的第一个Java+spark程序

spark的核心概念 (提前声明:文章由作者:张耀峰 结合自己生产中的使用经验整理,最终形成简单易懂的文章,写作不易,转载请注明) (文章参考:Elasticsearch权威指南,Spark快速大数据分析文档,Elasticsearch官方文档,实际项目中的应用场景) (帮到到您请点点关注,文章持续更新中!) Git主页 https://github.com/Mydreamandrea...

只有变秃,才能更强 2万+

Intellij Idea 分别用Java和scala 实现wordcount程序

Java编写Spark WordCount程序 package com.Spark.wordCount; import java.util.Arrays; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRD

weixin_38655836的博客 947

wordcount程序

使用spark-shell开发wordcount程序 1、登录master节点,进入spark-shell #bin/spark-shell --master spark://172.16.48.201:7077 --executor-memory 1024m --driver-memory 1024m --total-executor-cores 4executor-memory是slave

小江专栏 911

Spark---Java和Scala版本的WordCount

Java版本地WordCount package cn.spark.core._01_core_basic; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.s...

XiaodunLP的博客 367
上一篇: spark的基本工作原理和RDD
下一篇: Spark核心编程:Spark架构原理
VectorYang
博客等级 码龄10年 17粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值