Spark的Java和Scala API的使用

  • Spark的Java和Scala API的使用

    实验环境

    Linux Ubuntu 16.04
    前提条件:

    1. Java 运行环境部署完成
    2. Spark Local模式部署完成
      上述前提条件,我们已经为你准备就绪了。
    实验内容

    在上述前提条件下,完成Spark中Scala和Java API的使用

  • 实验步骤

    1.点击"命令行终端",打开新窗口

  • 2.启动Scala的Shell

    在命令行终端中输入下面的命令即可启动Scala Shell

    启动后终端显示如下:

    如上出现了 Scala>表明进入了Scala的Shell

  • 3.弹性分布式数据集RDD

    RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。

  • 4.RDD的创建方法

    1) 由一个已经存在的Scala集合创建。

    2) 由外部存储系统的数据集创建,包括本地的文件系统,还有所有Hadoop支持的数据集,比如HDFS、Cassandra、HBase等

  • RDD编程Scala API

    5.Transformation转换

    RDD中的所有转换都是延迟加载的,也就是说,它们并不会直接计算结果。相反的,它们只是记住这些应用到基础数据集(例如一个文件)上的转换动作。只有当发生一个要求返回结果给Driver的动作时,这些转换才会真正运行。这种设计让Spark更加有效率地运行。
    常用的Transformation
    map(func)
    返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成

    filter(func)
    返回一个新的RDD,该RDD由经过func函数计算后返回值为true的输入元素组成

    flatMap(func)
    类似于map,但是每一个输入元素可以被映射为0或多个输出元素(所以func应该返回一个序列,而不是单一元素)

    union(otherDataset)
    对源RDD和参数RDD求并集后返回一个新的RDD

    intersection(otherDataset)
    对源RDD和参数RDD求交集后返回一个新的RDD

    groupByKey([numTasks])
    在一个(K,V)的RDD上调用,返回一个(K, Iterator[V])的RDD

    reduceByKey(func, [numTasks])
    在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用指定的reduce函数,将相同key的值聚合到一起,与groupByKey类似,reduce任务的个数可以通过第二个可选的参数来设置

    sortByKey([ascending], [numTasks])
    在一个(K,V)的RDD上调用,K必须实现Ordered接口,返回一个按照key进行排序的(K,V)的RDD

    join(otherDataset, [numTasks])
    在类型为(K,V)和(K,W)的RDD上调用,返回一个相同key对应的所有元素对在一起的(K,(V,W))的RDD

  • 6.Action动作

    常用的Action

    reduce(func)
    通过func函数聚集RDD中的所有元素,这个功能必须是课交换且可并联的

    collect()
    在驱动程序中,以数组的形式返回数据集的所有元素

    count()
    返回RDD的元素个数

    first()
    返回RDD的第一个元素(类似于take(1))

    take(n)
    返回一个由数据集的前n个元素组成的数组

    takeSample(withReplacement,num, [seed])
    返回一个数组,该数组由从数据集中随机采样的num个元素组成,可以选择是否用随机数替换不足的部分,seed用于指定随机数生成器种子

    saveAsTextFile(path)
    将数据集的元素以textfile的形式保存到HDFS文件系统或者其他支持的文件系统,对于每个元素,Spark将会调用toString方法,将它装换为文件中的文本

    saveAsSequenceFile(path)
    将数据集中的元素以Hadoop sequencefile的格式保存到指定的目录下,可以使HDFS或者其他Hadoop支持的文件系统。

    foreach(func)
    在数据集的每一个元素上,运行函数func进行更新。

  • 熟悉API的操作

    7.练习1

    在Scala命令行中运行下面的代码

    通过并行化生成rdd

    对rdd1里的每一个元素乘2然后排序

    过滤出大于等于十的元素

    将元素以数组的方式在客户端显示

    运行上述代码后,显示如下:

  • 8.练习2

    在Scala命令行中运行下面的代码

    将rdd1里面的每一个元素先切分在压平

    运行上述代码后,显示如下:

  • 9.练习3

    在Scala命令行中运行下面的代码

    求并集

    求交集

    去重

    运行上述代码后,显示如下:

  • 10.练习4

    在Scala命令行中运行下面的代码

    求jion

    求并集

    按key进行分组

    运行上述代码后,显示如下:

  • 11.练习5

    在Scala命令行中运行下面的代码

    cogroup, 注意cogroup与groupByKey的区别

    运行上述代码后,显示如下:

  • 12.练习6

    在Scala命令行中运行下面的代码

    reduce聚合

    运行上述代码后,显示如下:

  • 13.练习7

    在Scala命令行中运行下面的代码

    按key进行聚合

    按value的降序排序

    运行上述代码后,显示如下:

  • Spark Java API的使用

    由于Spark中Scala和Java的API几乎是一样的,这里就使用Java来完成一个wordcount案例,达到熟练Java API的目的。

    14.双击桌面的Eclipse图标,打开Eclipse

    双击后会弹出窗口,指定工作空间路径,直接点击OK默认路径就好。如图1:

  • 15.新建Java项目

    新建java项目,选中Eclipse左上角File——>New——>Java Project
    输入项目名Example,选中 Use default JRE(currently ‘java’),点击Finish

  • 16.导入依赖的外部jar包

    右击项目,选择Build Path——>Configure Build Path…

    加入项目依赖的Spark Jar包。选中Libraries,单击右侧Add External JARs
    找到/apps/spark/jars目录,按Ctrl+A选中该目录下所有Jar包,点击OK,再点击Apply后,再点击OK

  • 17.创建类

    创建类,右击项目下的src目录,选中New——>Class
    在Package处填写包名com.doplhin.labs,Name处填写类名WordCountJava,点击Finish

  • 18.编写代码

    右击桌面上的wordCountJava.txt文件,选择用编辑器打开,复制文件中所有内容,粘贴到Eclipse上,再关闭编辑器即可

  • 19.运行

    点击Eclipse上方绿色按钮来运行代码

    如上所示,显示了/apps/spark/README.md文件中,所有单词出现的次数,表示实验成功。
    至此,本次实验结束啦。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无心 码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值