emacs+ensime+sbt打造spark源码阅读环境

Posted 大数据人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了emacs+ensime+sbt打造spark源码阅读环境相关的知识,希望对你有一定的参考价值。


emacs+ensime+sbt打造spark源码阅读环境

报道大数据企业:大数据产品、大数据方案、

  大数据人物

分享大数据干货:大数据书籍、大数据报告、

大数据视频emacs+ensime+sbt打造spark源码阅读环境

本文系大数据人转自阿里云栖社区。欢迎更多优质原创文章投稿给大数据人:289585305@qq.com

概述

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.13mkdir -p plugins
cd pluginstouch 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。变通的方法如下

  1. 运行emacs, 在emacs中打开SparkContext.scala具体什么源文件不重要,这里只是一个比方

  2. 在emacs中运行ensime-config-gen,按照提示一步步执行,最终生成.ensime

如何回答ensime-config-gen中的每一个问题,下面的screenshot给出了明确的示例。

emacs+ensime+sbt打造spark源码阅读环境

指定根目录

emacs+ensime+sbt打造spark源码阅读环境

设定项目类型,选择yes

emacs+ensime+sbt打造spark源码阅读环境

指定项目名称,spark

emacs+ensime+sbt打造spark源码阅读环境

package的名称 org.apache.spark

emacs+ensime+sbt打造spark源码阅读环境

指定源文件目录

emacs+ensime+sbt打造spark源码阅读环境

指定所依赖的包所在位置

emacs+ensime+sbt打造spark源码阅读环境

scala的标准库所在位置,选择 N

emacs+ensime+sbt打造spark源码阅读环境

指定生成的classess被保存在哪个目录,选择默认

emacs+ensime+sbt打造spark源码阅读环境

至此,配置完成,在spark-0.9.0-incubating/core/src/main能够打到.ensime文件

运行ensime

一旦生成了.ensime,就可以直接在emacs中唤起ensime了,M-X进入minibuffer,输入ensime

emacs+ensime+sbt打造spark源码阅读环境

确认.ensime的位置

emacs+ensime+sbt打造spark源码阅读环境

.ensime加载进来之后,状态栏上的"No Connection"提示信息消失,取而代之的是“spark analyzing",表明正在进行源文件的indexing.

emacs+ensime+sbt打造spark源码阅读环境

ensime指令简明指南

ensime环境搭建完毕,具体指令的话请查看ensime官网上的manual.

由于我是进行源码走读,所以比较注重代码的调用和跳转。

将光标移动某一个类的起始定义处 如class SparkContext,然后调用快捷键c-c c-v i 列出SparkContext的变量与函数

emacs+ensime+sbt打造spark源码阅读环境

c-c c-v p 列出当前package中的所有类

c-c c-v v 查找某一个方法或类

c-c c-v r 查看当前函数在哪些地方被调用,类似于source insight中的calling或eclipse中的calling hierarchy功能

alt-. 跳转到函数或类的定义处

alt-, 跳转到之前的位置



版权声明由“大数据人”推荐的文章,除非确实无法确认,我们都会注明作者和来源。部分文章推送时未能与原作者取得联系。若涉及版权问题,烦请原作者联系我们(QQ:289585305),与您共同协商解决。(www.bigdata.ren

投稿邮箱:admin@bigdata.ren




emacs+ensime+sbt打造spark源码阅读环境


微信扫描下方二维码

查看大数据产业通讯录


以上是关于emacs+ensime+sbt打造spark源码阅读环境的主要内容,如果未能解决你的问题,请参考以下文章

如何全局安装 sbt ensime 插件?

Spark源码编译

如何在从 ensime 启动的 Scala REPL 中自动完成?

Ensime 用于 android 项目中的 .java 文件

看看spark的源码

在emacs中安装scala