Spark实战 - 1 - 配置和运行

本文所用的ide是scala eclipse,传送门
数据集用的是MovieLens的ml-100k, 传送门
以后会加入intellij idea的配置……

建立Scala项目

  • 进入eclipse ide后,点击左上角的icon,然后点击Scala Project

图片1

  • 建立Scala Project,输入Project name,我用的都是ScalaSparkLearning
    JRE记得要选对,选择你自己的机器上的JRE,然后__finish__
    图片2

  • 此时在IDE左边就出现了我们的Project tree,/src/就是我们工作的地方
    图片3

  • 在我们的Project根目录上右键,创建一个package,这个跟java很像,类似于用maven来管理java项目的package的创建。
    我用的是我自己的名字,com.ephraim.spark。这里看随意。
    然后__finish__
    图片5
    图片6

此时我们的Scala项目就建立好啦。下一步我们就来写一个Spark应用吧!

我的第一个Spark应用

我非常建议,如果不是太熟悉scala并且对函数式编程也不熟悉的小伙伴,一定要去先看看这两个东西。不然以来就整Spark会比较懵。

  • 建立项目喽!
    在我们刚刚创建的package上右键,然后选择Scala Object,我的文件名是__RatingsCounter__,这里随意了,然后__finish__
    图片7
    图片8
    此时我们发现我们的Object已经创建好了。和Java一样,Object虽然不存在于Java,但是在Scala里面也是要和文件名一样。
    图片9

  • 然后我们就开始写代码吧!

    1. 先引入需要的package
    import org.apache.spark._
    import org.apache.spark.SparkContext._
    
    1. 然后定义一个function在我们的Object里面。
      在scala里面,function是用def funcName()来定义的
     object RatingsCounter {
    
      /** 主方法,相当于Java的main方法*/
      def main(args: Array[String]) {
        // 创建了一个SparkContext
        // local[*],代表了使用所有本地CPU核心去计算
        // 这个SparkContext的名字是RatingsCounter
        val sc = new SparkContext("local[*]", "RatingsCounter")
    
        // 使用sc.textFile的方法,将我们的数据集读入。类似python的pandas.csv('./ml-100k/u.data')
        // 此处要注意,textFile索引文件的时候,是从我们的项目的根目录下索引的
        // 所以ml-100k是在我们SparkScalaLearning这个根目录下的。
        val lines = sc.textFile("./ml-100k/u.data")
    
        // Convert each line to a string, split it out by tabs, and extract the third field.
        // (The file format is userID, movieID, rating, timestamp)
        val ratings = lines.map(x => x.toString().split("\t")(2))
    
        // Count up how many times each value (rating) occurs
        val results = ratings.countByValue()
    
        // Sort the resulting map of (rating, count) tuples
        val sortedResults = results.toSeq.sortBy(_._1)
    
        // Print each result on its own line.
        sortedResults.foreach(println)
      }
    }
    

    这里如果有不知道啥是SparkContext的小伙伴,可以看我另一篇Spark RDD的介绍和应用
    关于数据集的位置有疑惑的,我上个图
    图片10

wow,这样我们代码就写完了!快来运行一把!!
等等先别着急……

  1. 设置External Jars和Scala版本
    这几个红叉叉看的真不爽……咋回事呢……
    图片11

因为我们的scala eclipse ide,还不够智能,我们智能人工来配置这个项目的编译的jar packages。

  • 我们在根目录上右键,点击Properties
    图片12
  • 在弹出的窗口中选择 Java Build Path,再选中Libraries
    图片13
  • 在右边的选项中点击Add External JARs,去到系统的apache-spark的sdk目录,然后找到jar文件夹,选中里面所有的.jar文件,对,是所有!
    用mac的小伙伴如果是用brew安装的,可以直接到/usr/local/Cellar/apache-spark/2.4.5/libexec来找。
    用win的小伙伴直接去安装目录下就可以找到了,非常简单。
    图片14
    最后点击右下__apply and close__
    image.png

现在看我们的项目是不是一个错误都没有了呢,嘿嘿嘿。
有的小伙伴估计要哭了,因为貌似出现了更多的错误。
图片15

这个是因为Scala的版本问题,途中Scala需要的版本是2.11.*,而我们现在的版本是2.12.3。这个可以直接看Project Tree那边。
所以我们现在要修改当前的Scala版本
我们再去根目录右键,Properties。这次点击Scala Compiler,然后选中Use Project Settings,接下来就可以选择我们需要的Scala版本了。这里我们选择2.11
图片16
然后右下的__apply and close__, 世界终于安静了。

  • 终于终于我们要来run一下了!
    先不要急哈,我们先配置一下运行环境,呵呵呵,确实好麻烦……我应该用intellij的……
    图片17
    在跳出的窗口选择Scala Application,然后右键 -> new
    图片18
    此时在新窗口的Main class一项中填写刚才我们的RatingsCounter的完整包路径:com.ephraim.spark.RatingsCounter
    图片19
    然后点击右下的apply,再点击run,然后boom
(1,6110)
(2,11370)
(3,27145)
(4,34174)
(5,21201)

各位小伙伴是不是跟我拿到了一样的结果呢?
欢迎留言交流哦!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值