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)

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352