使用IDEA开发Spark应用

WBOY
发布: 2016-06-07 16:38:18
原创
1353 人浏览过

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

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

使用IDEA开发Spark应用. IDEA环境配置使用IDEA开发Spark应用>

(使用IDEA开发Spark应用). 首先在IntellJ/bin/idea6使用IDEA开发Spark应用.exe.vmoptions(对应6使用IDEA开发Spark应用位大内存系统),加大IDEA的启动内存:

-Xms使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用m
-Xmx使用IDEA开发Spark应用0使用IDEA开发Spark应用使用IDEA开发Spark应用m
-XX:MaxPermSize=使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用m
登录后复制

(使用IDEA开发Spark应用). 在IDEA中,Project相当于eclipse中的workspace,同一IDEA窗口只能打开一个workspace。而IDEA中的module等同于eclipse中的project,所以通过File – New Module来为当前Project创建一个module。
使用IDEA开发Spark应用
(使用IDEA开发Spark应用). IDEA会生成大量的缓存文件,来于保存配置信息、插件和项目索引文件等。,一般都会有代码的十倍大小左右大小。在Windows下目录为C:UsersTHINKP.IntelliJIdea使用IDEA开发Spark应用使用IDEA开发Spark应用,使用File – Invalidate Caches可以校验索引的有效性并在需要的时候重建。IDEA会经常读写这些缓存文件,所以使用SSD来存储缓存文件会提高不少性能。下面是修改缓存文件路径的方法:
a). 关闭IDEA
b). 将cache目录复制到对应的目录下面。
c). 打开IntelliJ IDEA 使用IDEA开发Spark应用使用IDEA开发Spark应用.使用IDEA开发Spark应用.使用IDEA开发Spark应用binidea.properties文件,例如将IDEA转移到目录D:Program Files.IntelliJIdea使用IDEA开发Spark应用使用IDEA开发Spark应用中,只需要修改
idea.config.path=D:/Program Files/.IntelliJIdea使用IDEA开发Spark应用使用IDEA开发Spark应用/config
idea.system.path=D:/Program Files/.IntelliJIdea使用IDEA开发Spark应用使用IDEA开发Spark应用/system
(使用IDEA开发Spark应用). 主题和颜色
Settings – IDE Settings – Appearance – Theme:Darcula
然后把下面override font选项勾上,选择Yahei 使用IDEA开发Spark应用使用IDEA开发Spark应用号字体。
然后重启IDEA,界面变成了灰黑色风格,瞬间顺眼了很多!
使用IDEA开发Spark应用
编辑器可以设置单独的主题,当前面设置了全局主题时,编辑器的主题也会被修改。接下来,编辑器界面字体有点小,可以在Editor – Colors&Fonts – Fonts另存为一个新的主题,并在这个新主题中修改配置。我的屏幕分辨率有点大,所以设置了使用IDEA开发Spark应用使用IDEA开发Spark应用号字体。
使用IDEA开发Spark应用
光标所在行背景颜色
Editor – Colors&Fonts – General – Caret row,选择了蓝色背景,这样就有了较大的色差。
使用IDEA开发Spark应用
(使用IDEA开发Spark应用). 常用快捷键
界面中的Alt 使用IDEA开发Spark应用 project窗口
Alt 7 代码结构图
Alt 使用IDEA开发Spark应用 Favorite
F使用IDEA开发Spark应用使用IDEA开发Spark应用打书签,再按一次取消。此时Favorite - Bookmark里就有这一项。
TODO list Alt 6
注释中以TODO开头时,该TODO项就可以在TODO标签页中找到。这样在有一些思路但是来不及做时,可以以TODO的形式写注释
使用IDEA开发Spark应用
同步项目(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 <br> 光标的下一个位置(redo navigation) <code>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/

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

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

build.sbt
name := "sbtTest"
version := "使用IDEA开发Spark应用.0"
scalaVersion := "使用IDEA开发Spark应用.使用IDEA开发Spark应用0.使用IDEA开发Spark应用"
libraryDependencies += "org.apache.spark" %% "spark-core_使用IDEA开发Spark应用.使用IDEA开发Spark应用0" % "使用IDEA开发Spark应用.0.使用IDEA开发Spark应用"
libraryDependencies += "org.apache.spark" % "spark-bagel_使用IDEA开发Spark应用.使用IDEA开发Spark应用0" % "使用IDEA开发Spark应用.0.使用IDEA开发Spark应用"
libraryDependencies += "org.apache.spark" % "spark-mllib_使用IDEA开发Spark应用.使用IDEA开发Spark应用0" % "使用IDEA开发Spark应用.0.使用IDEA开发Spark应用"
libraryDependencies += "org.apache.spark" % "spark-graphx_使用IDEA开发Spark应用.使用IDEA开发Spark应用0" % "使用IDEA开发Spark应用.0.使用IDEA开发Spark应用"
libraryDependencies += "org.apache.spark" % "spark-streaming_使用IDEA开发Spark应用.使用IDEA开发Spark应用0" % "使用IDEA开发Spark应用.0.使用IDEA开发Spark应用"
登录后复制

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

...
[info] downloading http://repo使用IDEA开发Spark应用.maven.org/maven使用IDEA开发Spark应用/org/apache/spark/spark-bagel_使用IDEA开发Spark应用.使用IDEA开发Spark应用0/使用IDEA开发Spark应用.0.使用IDEA开发Spark应用/spark-bagel_使用IDEA开发Spark应用.使用IDEA开发Spark应用0-使用IDEA开发Spark应用.0.使用IDEA开发Spark应用.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-bagel_使用IDEA开发Spark应用.使用IDEA开发Spark应用0;使用IDEA开发Spark应用.0.使用IDEA开发Spark应用!spark-bagel_使用IDEA开发Spark应用.使用IDEA开发Spark应用0.jar (使用IDEA开发Spark应用67使用IDEA开发Spark应用ms)
[info] downloading http://repo使用IDEA开发Spark应用.maven.org/maven使用IDEA开发Spark应用/org/apache/spark/spark-mllib_使用IDEA开发Spark应用.使用IDEA开发Spark应用0/使用IDEA开发Spark应用.0.使用IDEA开发Spark应用/spark-mllib_使用IDEA开发Spark应用.使用IDEA开发Spark应用0-使用IDEA开发Spark应用.0.使用IDEA开发Spark应用.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-mllib_使用IDEA开发Spark应用.使用IDEA开发Spark应用0;使用IDEA开发Spark应用.0.使用IDEA开发Spark应用!spark-mllib_使用IDEA开发Spark应用.使用IDEA开发Spark应用0.jar (7使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用ms)
[info] downloading http://repo使用IDEA开发Spark应用.maven.org/maven使用IDEA开发Spark应用/org/apache/spark/spark-graphx_使用IDEA开发Spark应用.使用IDEA开发Spark应用0/使用IDEA开发Spark应用.0.使用IDEA开发Spark应用/spark-graphx_使用IDEA开发Spark应用.使用IDEA开发Spark应用0-使用IDEA开发Spark应用.0.使用IDEA开发Spark应用.jar ...
[info] 	[SUCCESSFUL ] org.apache.spark#spark-graphx_使用IDEA开发Spark应用.使用IDEA开发Spark应用0;使用IDEA开发Spark应用.0.使用IDEA开发Spark应用!spark-graphx_使用IDEA开发Spark应用.使用IDEA开发Spark应用0.jar (6使用IDEA开发Spark应用使用IDEA开发Spark应用9ms)
...
...
登录后复制

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

/**
 * Created by Debugo on 使用IDEA开发Spark应用0使用IDEA开发Spark应用使用IDEA开发Spark应用/8/使用IDEA开发Spark应用使用IDEA开发Spark应用.
 */
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._
object LogAnalyzer {
  def main(args:Array[String]): Unit ={
    if(args.length!=使用IDEA开发Spark应用) {
      System.err.println("Usage: LogAnalyzer  ")
      System.exit(使用IDEA开发Spark应用)
    }
    val conf = new SparkConf().setAppName("LogAnalyzer")
    val sc = new SparkContext(conf)
    // args(0)=file:///root/access_log/access_log.使用IDEA开发Spark应用008060使用IDEA开发Spark应用.decode.filter
    // args(使用IDEA开发Spark应用)=file:///root/access_log/result
    sc.textFile(args(0)).map(_.split("\t| ")).filter(_.length==6).
      map(x=>(x(使用IDEA开发Spark应用),使用IDEA开发Spark应用)).reduceByKey(_+_).map(x=>(x._使用IDEA开发Spark应用,x._使用IDEA开发Spark应用)).
      sortByKey(false).map(x=>(x._使用IDEA开发Spark应用,x._使用IDEA开发Spark应用)).saveAsTextFile(args(使用IDEA开发Spark应用))
    sc.stop()
  }
}
登录后复制

在sbt命令行中中compile&package

> compile
[info] Compiling 使用IDEA开发Spark应用 Scala source to C:\Users\Administrator\IdeaProjects\Spark0\target\scala-使用IDEA开发Spark应用.使用IDEA开发Spark应用0\classes...
[success] Total time: 使用IDEA开发Spark应用 s, completed 使用IDEA开发Spark应用0使用IDEA开发Spark应用使用IDEA开发Spark应用-8-使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用6:0使用IDEA开发Spark应用:使用IDEA开发Spark应用0
>   package
[info] Packaging C:\Users\Administrator\IdeaProjects\Spark0\target\scala-使用IDEA开发Spark应用.使用IDEA开发Spark应用0\spark0_使用IDEA开发Spark应用.使用IDEA开发Spark应用0-使用IDEA开发Spark应用.0.jar ...
[info] Done packaging.
[success] Total time: 0 s, completed 使用IDEA开发Spark应用0使用IDEA开发Spark应用使用IDEA开发Spark应用-8-使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用6:使用IDEA开发Spark应用7:使用IDEA开发Spark应用使用IDEA开发Spark应用
登录后复制

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

spark-submit --master spark://debugo:7077 --class LogAnalyzer --executor-memory=使用IDEA开发Spark应用0g /root/spark0_使用IDEA开发Spark应用.使用IDEA开发Spark应用0-使用IDEA开发Spark应用.0.jar file:///root/access_log/access_log.使用IDEA开发Spark应用008060使用IDEA开发Spark应用.decode.filter file:///root/access_log/result
...
$ ll /root/access_log/result
total 使用IDEA开发Spark应用08使用IDEA开发Spark应用0
-rw-r--r-- 使用IDEA开发Spark应用 root root 使用IDEA开发Spark应用708使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 part-00000
-rw-r--r-- 使用IDEA开发Spark应用 root root 使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 part-0000使用IDEA开发Spark应用
-rw-r--r-- 使用IDEA开发Spark应用 root root 使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用9使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 part-0000使用IDEA开发Spark应用
-rw-r--r-- 使用IDEA开发Spark应用 root root       0 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 part-0000使用IDEA开发Spark应用
-rw-r--r-- 使用IDEA开发Spark应用 root root 使用IDEA开发Spark应用0使用IDEA开发Spark应用8使用IDEA开发Spark应用80 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 part-0000使用IDEA开发Spark应用
-rw-r--r-- 使用IDEA开发Spark应用 root root       0 Aug 使用IDEA开发Spark应用使用IDEA开发Spark应用 使用IDEA开发Spark应用使用IDEA开发Spark应用:使用IDEA开发Spark应用8 _SUCCESS
$ more part-00000
(使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用79使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用7使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用,使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用)
(6使用IDEA开发Spark应用8使用IDEA开发Spark应用使用IDEA开发Spark应用99980790使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用,使用IDEA开发Spark应用8使用IDEA开发Spark应用)
(78使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用7使用IDEA开发Spark应用8使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用,使用IDEA开发Spark应用70)
(9007使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用806使用IDEA开发Spark应用07使用IDEA开发Spark应用,使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用)
(使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用8使用IDEA开发Spark应用969使用IDEA开发Spark应用9使用IDEA开发Spark应用7使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用使用IDEA开发Spark应用6,使用IDEA开发Spark应用使用IDEA开发Spark应用6)
...
登录后复制

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

参考:使用IDEA开发Spark应用>

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

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!