0

0

使用IDEA开发Spark应用

php中文网

php中文网

发布时间:2016-06-07 16:38:18

|

1677人浏览过

|

来源于php中文网

原创

IDEA 全称IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能都非常棒,而且IDEA是目前Scala支持最

idea 全称intellij idea,是java语言开发的集成环境,intellij在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、j2ee支持、ant、junit、cvs整合、代码审查、 创新的gui设计等方面的功能都非常棒,而且idea是目前scala支持最好的ide。idea分ultimate和free edition版,ultimate提供了j2ee等很多非常强力的功能,free edition我觉得已经对于我这样的初学者已经够用了。前面写过一篇配置intellij idea 13的sbt和scala开发环境,本文在这个基础上使用idea进行spark应用的配置和开发。

1. IDEA环境配置

(1). 首先在IntellJ/bin/idea64.exe.vmoptions(对应64位大内存系统),加大IDEA的启动内存:

-Xms512m
-Xmx1024m
-XX:MaxPermSize=512m

(2). 在IDEA中,Project相当于eclipse中的workspace,同一IDEA窗口只能打开一个workspace。而IDEA中的module等同于eclipse中的project,所以通过File – New Module来为当前Project创建一个module。
1
(3). IDEA会生成大量的缓存文件,来于保存配置信息、插件和项目索引文件等。,一般都会有代码的十倍大小左右大小。在Windows下目录为C:\Users\THINKP\.IntelliJIdea13,使用File – Invalidate Caches可以校验索引的有效性并在需要的时候重建。IDEA会经常读写这些缓存文件,所以使用SSD来存储缓存文件会提高不少性能。下面是修改缓存文件路径的方法:
a). 关闭IDEA
b). 将cache目录复制到对应的目录下面。
c). 打开IntelliJ IDEA 13.1.3\bin\idea.properties文件,例如将IDEA转移到目录D:\Program Files\.IntelliJIdea13中,只需要修改
idea.config.path=D:/Program Files/.IntelliJIdea13/config
idea.system.path=D:/Program Files/.IntelliJIdea13/system
(4). 主题和颜色
Settings – IDE Settings – Appearance – Theme:Darcula
然后把下面override font选项勾上,选择Yahei 14号字体。
然后重启IDEA,界面变成了灰黑色风格,瞬间顺眼了很多!
2
编辑器可以设置单独的主题,当前面设置了全局主题时,编辑器的主题也会被修改。接下来,编辑器界面字体有点小,可以在Editor – Colors&Fonts – Fonts另存为一个新的主题,并在这个新主题中修改配置。我的屏幕分辨率有点大,所以设置了15号字体。
3
光标所在行背景颜色
Editor – Colors&Fonts – General – Caret row,选择了蓝色背景,这样就有了较大的色差。
4
(5). 常用快捷键
界面中的Alt+1 project窗口
Alt+7 代码结构图
Alt+2 Favorite
F11打书签,再按一次取消。此时Favorite - Bookmark里就有这一项。
TODO list Alt+6
注释中以TODO开头时,该TODO项就可以在TODO标签页中找到。这样在有一些思路但是来不及做时,可以以TODO的形式写注释
5
同步项目(Detect all externally changed files and reload them from disk)Ctrl+Y
保存(Save all) Ctrl+S
undo Ctrl+Z
redo Ctrl+Shift+Y
剪切 Ctrl+X
复制 Ctrl+C
粘贴 Ctrl+V
查找 Ctrl+F
替换 Ctrl+R
光标的上一个位置(undo navigation) Ctrl+Alt+
光标的下一个位置(redo navigation) Ctrl+Alt+->
make Ctrl+F9
(6). 项目文件设定
行分割模式: File - Separators 选择Windows风格(/r/n), UNIX的风格(/n)或者mac风格(/r)等等。
将文件锁定编辑 - File - Make file read only
文件编码设置 Project Settings - File Encodings
推荐YouMeek IDEA教程,我认为是目前详细的IDEA教程之一。
http://www.youmeek.com/category/software-system/my-intellij-idea/

2. 使用IDEA开发Spark程序并运行

首先编辑build.sbt文件,每个配置项都要有一个空格来分割。

build.sbt
name := "sbtTest"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-bagel_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-mllib_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-graphx_2.10" % "1.0.2"
libraryDependencies += "org.apache.spark" % "spark-streaming_2.10" % "1.0.2"

打开SBT,可以观察到SBT正在downloading dependencies。

...
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-bagel_2.10/1.0.2/spark-bagel_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-bagel_2.10;1.0.2!spark-bagel_2.10.jar (5672ms)
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-mllib_2.10/1.0.2/spark-mllib_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-mllib_2.10;1.0.2!spark-mllib_2.10.jar (7351ms)
[info] downloading http://repo1.maven.org/maven2/org/apache/spark/spark-graphx_2.10/1.0.2/spark-graphx_2.10-1.0.2.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-graphx_2.10;1.0.2!spark-graphx_2.10.jar (6349ms)
...
...

编写代码,这段代码用于处理web前端日志,其中第二列是session的ID,输出Session访问次数的排名。

ZOER
ZOER

AI全栈应用开发平台

下载
/**
 * Created by Debugo on 2014/8/25.
 */
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._
object LogAnalyzer {
  def main(args:Array[String]): Unit ={
    if(args.length!=2) {
      System.err.println("Usage: LogAnalyzer  ")
      System.exit(1)
    }
    val conf = new SparkConf().setAppName("LogAnalyzer")
    val sc = new SparkContext(conf)
    // args(0)=file:///root/access_log/access_log.20080601.decode.filter
    // args(1)=file:///root/access_log/result
    sc.textFile(args(0)).map(_.split("\t| ")).filter(_.length==6).
      map(x=>(x(1),1)).reduceByKey(_+_).map(x=>(x._2,x._1)).
      sortByKey(false).map(x=>(x._2,x._1)).saveAsTextFile(args(1))
    sc.stop()
  }
}

在sbt命令行中中compile&package

> compile
[info] Compiling 1 Scala source to C:\Users\Administrator\IdeaProjects\Spark0\target\scala-2.10\classes...
[success] Total time: 5 s, completed 2014-8-25 16:05:20
>   package
[info] Packaging C:\Users\Administrator\IdeaProjects\Spark0\target\scala-2.10\spark0_2.10-1.0.jar ...
[info] Done packaging.
[success] Total time: 0 s, completed 2014-8-25 16:17:12

将jar上传到配置spark运行库的节点,提交job,spark会创建结果输出的result目录。最终RDD被分割成了5个分区。

spark-submit --master spark://debugo:7077 --class LogAnalyzer --executor-memory=10g /root/spark0_2.10-1.0.jar file:///root/access_log/access_log.20080601.decode.filter file:///root/access_log/result
...
$ ll /root/access_log/result
total 10840
-rw-r--r-- 1 root root 2708325 Aug 25 15:58 part-00000
-rw-r--r-- 1 root root 1114214 Aug 25 15:58 part-00001
-rw-r--r-- 1 root root 2239113 Aug 25 15:58 part-00002
-rw-r--r-- 1 root root       0 Aug 25 15:58 part-00003
-rw-r--r-- 1 root root 5028580 Aug 25 15:58 part-00004
-rw-r--r-- 1 root root       0 Aug 25 15:58 _SUCCESS
$ more part-00000
(11579135515147154,431)
(6383499980790535,385)
(7822241147182134,370)
(900755558064074,335)
(12385969593715146,226)
...

得到了我们想要的按session ID的排名结果。
^^

参考:

Spark Programming Guide
mmicky Spark大数据快速计算平台

相关专题

更多
java数据库连接教程大全
java数据库连接教程大全

本专题整合了java数据库连接相关教程,阅读专题下面的文章了解更多详细内容。

20

2026.01.15

Java音频处理教程汇总
Java音频处理教程汇总

本专题整合了java音频处理教程大全,阅读专题下面的文章了解更多详细内容。

5

2026.01.15

windows查看wifi密码教程大全
windows查看wifi密码教程大全

本专题整合了windows查看wifi密码教程大全,阅读专题下面的文章了解更多详细内容。

27

2026.01.15

浏览器缓存清理方法汇总
浏览器缓存清理方法汇总

本专题整合了浏览器缓存清理教程汇总,阅读专题下面的文章了解更多详细内容。

2

2026.01.15

ps图片相关教程汇总
ps图片相关教程汇总

本专题整合了ps图片设置相关教程合集,阅读专题下面的文章了解更多详细内容。

7

2026.01.15

ppt一键生成相关合集
ppt一键生成相关合集

本专题整合了ppt一键生成相关教程汇总,阅读专题下面的的文章了解更多详细内容。

3

2026.01.15

php图片上传教程汇总
php图片上传教程汇总

本专题整合了php图片上传相关教程,阅读专题下面的文章了解更多详细教程。

2

2026.01.15

phpstorm相关教程大全
phpstorm相关教程大全

本专题整合了phpstorm相关教程汇总,阅读专题下面的文章了解更多详细内容。

4

2026.01.15

Golang gRPC 服务开发与Protobuf实战
Golang gRPC 服务开发与Protobuf实战

本专题系统讲解 Golang 在 gRPC 服务开发中的完整实践,涵盖 Protobuf 定义与代码生成、gRPC 服务端与客户端实现、流式 RPC(Unary/Server/Client/Bidirectional)、错误处理、拦截器、中间件以及与 HTTP/REST 的对接方案。通过实际案例,帮助学习者掌握 使用 Go 构建高性能、强类型、可扩展的 RPC 服务体系,适用于微服务与内部系统通信场景。

16

2026.01.15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 8.6万人学习

CSS3 教程
CSS3 教程

共18课时 | 4.6万人学习

Git 教程
Git 教程

共21课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号