第四章 用IDEA写一个spark小程序

创建:20161211
更新:20170115

本章小目标

  1. 搭建IDEA开发环境
  2. 安装并配置sbt
  3. 写一个spark程序并运行

软件版本

1. 安装IDEA

1.1 解gz包安装

话说以前都用eclipse,后来觉得还是jetbrains的系列IDE给力,我也用pycharm写python程序。有社区版和付费版,请随便选择一个合适的即可。

$ mkdir ~/soft/jetbrains
$ tar -xzvf ideaIU-2016.2.4.tar.gz -C ~/soft/jetbrains
$ tar -xzvf pycharm-professional-2016.1.4.tar.gz -C ~/soft/jetbrains/
$ cd ~/soft/jetbrains/idea-IU-162.2032.8/bin
$ ./idea.sh

下面进入图形化安装界面,过于简单此处略过,随便折腾吧,折腾坏了也没什么大不了的,可以删掉配置文件,再来一次。实在不行还有虚拟机快照呢!

$ rm -rf  ~/.IntelliJIdea2016.2/   #删掉IDEA配置

如果要安装pycharm,也是一样的步骤,有兴趣可以试试。

1.2 插件安装

上一步图形界面安装时,可以选择安装scala插件,vim插件。很不幸地联网失败了。怎么办呢,进入IDE启动页面。

image.png

右下角点击configure,然后选择PLugins,再选择下方的install plugin from disk

image.png

选择提前下载好的插件然后安装,可以在官网下载插件
另外,经过测试,插件安装失败应该是被墙了,后来把宿主机也翻过去就可以在线装了。

1.3 sbt安装与配置

linux下安装,看官网:
http://www.scala-sbt.org/1.0/docs/zh-cn/Installing-sbt-on-Linux.html

echo "deb https://dl.bintray.com/sbt/debian-experimental /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
sudo apt-get update
sudo apt-get install sbt

安装完成后需要配置一下源,否则会很慢。
配置源参考:第五章 SBT国内源配置

$ sbt sbtVersion 测试安装结果
[info] Set current project to root--sbt (in build file:/home/bit/.sbt/)
[info] 0.13.13

1.4 IDEA配置sbt

setting -》 Build-》SBT-》
找到本地安装sbt-launch.jar的路径,进行修改。

image.png

2 创建sbt spark工程

新建一个SBT工程,scala版本2.11.8,sbt版本与本地安装不一致,先选一个,稍后修改。
样例代码使用《spark机器学习》第一章的例子,我从网上下的:
Spark机器学习与随书代码- 下载频道- CSDN.NET

工程目录如下:
修改build.properties的sbt版本为本地版本。
修改build.sbt,增加:

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.2"
image.png

3 用SBT运行程序

到项目目录下执行,应该能看到如下结果

sbt run
17/01/15 18:19:14 INFO BlockManagerInfo: Removed broadcast_1_piece0 on 192.168.124.151:36074 in memory (size: 1956.0 B, free: 379.2 MB)
Total purchases: 5
Unique users: 4
Total revenue: 39.91
Most popular product: iPhone Cover with 2 purchases
17/01/15 18:19:14 INFO ContextCleaner: Cleaned shuffle 0

[success] Total time: 25 s, completed Jan 15, 2017 6:19:15 PM

4 编译打包输出

$ sbt
[info] Loading project definition from /home/bit/mlw_spark/hispark/project
[info] Set current project to hispark (in build file:/home/bit/mlw_spark/hispark/)
> 
> compile   编译
[success] Total time: 1 s, completed Jan 15, 2017 6:29:56 PM
> package  打包
[info] Packaging /home/bit/mlw_spark/hispark/target/scala-2.11/hispark_2.11-1.0.jar ...
[info] Done packaging.
[success] Total time: 0 s, completed Jan 15, 2017 6:30:09 PM
> 

5 提交到spark集群

spark运行方法参考:第三章 spark2.0实验环境搭建

在项目目录执行如下代码,指定编译打包输出的jar文件。
~/mlw_spark$ ~/soft/spark/spark-2.0.2-bin-hadoop2.7/bin/spark-submit --master local[2] ./hispark/target/scala-2.11/hispark_2.11-1.0.jar

报错1:

Exception in thread "main" java.net.ConnectException: Call From U1604N1/192.168.124.151 to U1604N1:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused

因为我构建的集群是hdfs的,因此需要在路径前指定输入文件来自操作系统本地文件。

val data = sc.textFile("file:data/UserPurchaseHistory.csv")

报错2:

17/01/15 18:36:51 INFO spark.SparkContext: Created broadcast 0 from textFile at ScalaApp.scala:13
Exception in thread "main" java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: file:data/UserPurchaseHistory.csv

提示说用file后就不支持相对路径了,这个不知道有没有什么办法,如果有,也可以回复给我。多谢
修改一下代码如下:

val data = sc.textFile("file:/home/bit/mlw_spark/hispark/data/UserPurchaseHistory.csv")

重新编译,打包,再次执行就可以了。
输出效果如下:

17/01/15 18:39:28 INFO scheduler.DAGScheduler: Job 3 finished: collect at ScalaApp.scala:30, took 0.155300 s
Total purchases: 5
Unique users: 4
Total revenue: 39.91
Most popular product: iPhone Cover with 2 purchases

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

推荐阅读更多精彩内容