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-, 跳转到之前的位置
emacs+ensime+sbt打造spark源码阅读环境的更多相关文章
- win7+idea+maven搭建spark源码阅读环境
1.参考. 利用IDEA工具编译Spark源码(1.60~2.20) https://blog.csdn.net/He11o_Liu/article/details/78739699 Maven编译打 ...
- 编译spark源码及塔建源码阅读环境
编译spark源码及塔建源码阅读环境 (一),编译spark源码 1,更换maven的下载镜像: <mirrors> <!-- 阿里云仓库 --> <mirror> ...
- Spark源码分析环境搭建
原创文章,转载请注明: 转载自http://www.cnblogs.com/tovin/p/3868718.html 本文主要分享一下如何构建Spark源码分析环境.以前主要使用eclipse来阅读源 ...
- Mac搭建Hadoop源码阅读环境
1.本次Hadoop源码阅读环境使用的阅读工具是idea,Hadoop版本是2.7.3.需要安装的工具包括idea.jdk.maven.protobuf等 2.jdk,使用的版本是1.8版,在jdk官 ...
- 基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建
基于Eclipse IDE的Ardupilot飞控源码阅读环境搭建 作者:Awesome 日期:2017-10-21 需准备的软件工具 Ardupilot飞控源码 PX4 toolchain JAVA ...
- Sping学习笔记(一)----Spring源码阅读环境的搭建
idea搭建spring源码阅读环境 安装gradle Github下载Spring源码 新建学习spring源码的项目 idea搭建spring源码阅读环境 安装gradle 在官网中下载gradl ...
- Spring源码阅读笔记01:源码阅读环境准备
1. 写在前面 对于做Java开发的同学来说,Spring就像是一条绕不过去的路,但是大多数也只是停留在对Spring的简单使用层面上,对于其背后的原理所知不多也不愿深究,关于这个问题,我在平时的生活 ...
- Spring5源码阅读环境搭建-gradle构建编译
前沿:Spring系列生态十分丰富,涉及到各个方面.但是作为Spring生态的核心基础Spring,是最重要的环节,需要理解Spring的设计原理,我们需要解读源码. 在构建Spring源码阅 ...
- 【Java】用IDEA搭建源码阅读环境
用IDEA搭建源码阅读环境 参考自CodeSheep的Mac源码环境搭建, https://www.bilibili.com/video/BV1V7411U78L 但是实际上在Windows搭建的差别 ...
随机推荐
- 解决Tomcat 6.0 只支持 J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
通过search,发现在project的.setting folder下面,有个名为org.eclipse.wst.common.project.facet.core.xml的文件,里面配置有各种版本 ...
- Mysql sql查询性能侦查
Mysql 服务性能优化配置:http://5434718.blog.51cto.com/5424718/1207526[该文章很好] Sql查询性能优化 对Sql进行优化,肯定是该Sql运行未能达到 ...
- Js 正则表达式特殊字符含义
字符 匹配 \o null \t 制表符 \n 换行符 \v 垂直制表符 \f 换页符 \r 回车符 \xnn 由十六进制nn指定的拉丁字符 ...
- PHP 文件上传类
FileUpload.; $]; $_newname = date(,). : To ...
- vijos 1037 ***
链接:点我 #include <cstdio> #include <cstring> #include <algorithm> #include <iostr ...
- poj 1935(树形dp)
题目链接:http://poj.org/problem?id=1935 思路:首先我们考虑从源点出发到所有自己想要经过的点然后在回到源点sum,显然每条边都必须经过源点(这个我们可以一次dfs求出), ...
- Touch 事件的分发和消费机制
Android 中与 Touch 事件相关的方法包括:dispatchTouchEvent(MotionEvent ev).onInterceptTouchEvent(MotionEvent ev). ...
- BFS+模拟 ZOJ 3865 Superbot
题目传送门 /* BFS+模拟:dp[i][j][p] 表示走到i,j,方向为p的步数为多少: BFS分4种情况入队,最后在终点4个方向寻找最小值:) */ #include <cstdio&g ...
- 排序+逆向思维 ACdream 1205 Disappeared Block
题目传送门 /* 从大到小排序,逆向思维,从最后开始考虑,无后向性 每找到一个没被淹没的,对它左右的楼层查询是否它是孤立的,若是++,若不是-- 复杂度 O(n + m),还以为 O(n^2)吓得写了 ...
- 位运算 2013年山东省赛 F Alice and Bob
题目传送门 /* 题意: 求(a0*x^(2^0)+1) * (a1 * x^(2^1)+1)*.......*(an-1 * x^(2^(n-1))+1) 式子中,x的p次方的系数 二进制位运算:p ...