emacs+ensime+sbt打造spark源码阅读环境
概述
Scala越来越流行, Spark也愈来愈红火, 对spark的代码进行走读也成了一个很普遍的行为。不巧的是,当前java社区中很流行的ide如eclipse,netbeans对scala的支持都不算太好。在这种情况下不得不想到编辑器之神emacs,利用emacs+ensime来打造scala编程环境。
本文讲述的步骤全部是在arch linux上,其它发行版的linux视具体情况变通。
安装scala
pacman -S scala
安装sbt
pacman -S sbt
安装ensime
yaourt -S ensime
添加如下代码到$HOME/.emacs中
(add-to-list 'load-path "/usr/share/ensime/elisp") (add-to-list 'exec-path "/usr/share/ensime") (require 'ensime) (add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
运行sbt
sbt
首次运行sbt会解决依赖,下载必须的包。生成$HOME/.sbt/0.13目录,假设当前的sbt版本是0.13的话。
创建plugin.sbt
cd ~/.sbt/0.13 mkdir -p plugins cd plugins touch plugin.sbt
在plugin.sbt中添加如下内容
addSbtPlugin("org.ensime" % "ensime-sbt-cmd" % "0.1.2")
再次运行sbt, sbt会自动下载ensime plugin
下载spark源码
假设下载的spark源码解压在$HOME/working目录。到些为止,准备工作都差不多了,开始真正的使用吧。
生成.ensime文件
spark采用maven进行编译管理,所以不能像一般的sbt工程那样直接使用ensime generate。变通的方法如下
- 运行emacs, 在emacs中打开SparkContext.scala具体什么源文件不重要,这里只是一个比方
- 在emacs中运行ensime-config-gen,按照提示一步步执行,最终生成.ensime
如何回答ensime-config-gen中的每一个问题,下面的screenshot给出了明确的示例。
指定根目录
设定项目类型,选择yes
指定项目名称,spark
package的名称 org.apache.spark
指定源文件目录
指定所依赖的包所在位置
scala的标准库所在位置,选择 N
指定生成的classess被保存在哪个目录,选择默认
至此,配置完成,在spark-0.9.0-incubating/core/src/main能够打到.ensime文件
运行ensime
一旦生成了.ensime,就可以直接在emacs中唤起ensime了,M-X进入minibuffer,输入ensime
确认.ensime的位置
.ensime加载进来之后,状态栏上的"No Connection"提示信息消失,取而代之的是“spark analyzing",表明正在进行源文件的indexing.
ensime指令简明指南
ensime环境搭建完毕,具体指令的话请查看ensime官网上的manual.
由于我是进行源码走读,所以比较注重代码的调用和跳转。
将光标移动某一个类的起始定义处 如class SparkContext,然后调用快捷键c-c c-v i 列出SparkContext的变量与函数
c-c c-v p 列出当前package中的所有类
c-c c-v v 查找某一个方法或类
c-c c-v r 查看当前函数在哪些地方被调用,类似于source insight中的calling或eclipse中的calling hierarchy功能
alt-. 跳转到函数或类的定义处
alt-, 跳转到之前的位置

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Apache Storm 衍生项目 & Apache Flink初接触
storm-yarn 概要 storm是一个近似于实时的计算框架,甩开hadoop上的原生mapreduce计算框架不只一条街。如果能将storm引入到hadoop中,对存储于hdfs的数据进行分析必然极大的提高处理性能。storm-yarn就是这样一个项目,由yahoo实现,目前已经开源。 除了storm-yarn试图将storm整合进hadoop,以提升hadoop的分析处理能力的尝试之外,Hortonworks也高调宣布在2014年推出整合了storm的hadoop发行版。当然Hortonworks的整合会基于storm-yarn,毕竟它们都属于yahoo系。 整合目的和优势 storm-yarn是来提升hadoop的处理分析能力,是对hadoop的增强,而非相反。 节选自Yahoo!开源运行在Hadoop上的Storm——Storm-YARN 提供了巨大的弹性潜力。实时处理的负载一般不恒定,而且是不可预测的。就其本身而言,为满足需求峰值,Storm会需要更多资源。将 Storm和批处理搭配使用,Storm需要资源时可以从批处理作业那里窃取,当资源需求下降时再把资源还回去。Sto...
- 下一篇
Elasticsearch hadoop使用示例 & 运维实战之集群规划 &presto-elasticsearch connecto...
elasticsearch-hadoop使用示例 在elasticsearch-hadoop的具体使用中碰到了几个问题,有必要记录一下,避免下次遇到时又要重新研究。 利用spark读取es数据源的简单示例 import org.elasticsearch.spark.sql._ val esOptions = Map("es.nodes"->"192.168.1.2,192.168.1.3", "es.scroll.size"->"1000", "es.field.read.as.array.include"->"SampleField") val esDF = sqlContext.read.format("org.elasticsearch.spark.sql").options(esOptions).load("sampleindex/es-spark") esDF.registerTempTable("esdemotbl") es.scroll.size一次性读入的记录数,默认是10, 如果不设置为大一点的值,要从es中读取1亿条数据,那将是一个漫长的过程 e...
相关文章
文章评论
共有0条评论来说两句吧...