博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
scala的REPL shell的调用
阅读量:4947 次
发布时间:2019-06-11

本文共 1400 字,大约阅读时间需要 4 分钟。

最近突然对spark的spark-shell发生了兴趣

它是如何启动scala的REPL的,并且在此前写入了常用的环境变量的呢?
通过查看spark的源码,找到了SparkILoop.scala

import scala.tools.nsc.interpreter.{JPrintWriter, ILoop}/** *  A Spark-specific interactive shell. */class SparkILoop(in0: Option[BufferedReader], out: JPrintWriter)    extends ILoop(in0, out) {  def this(in0: BufferedReader, out: JPrintWriter) = this(Some(in0), out)  def this() = this(None, new JPrintWriter(Console.out, true))  def initializeSpark() {    intp.beQuietDuring {      processLine("""         @transient val sc = {           val _sc = org.apache.spark.repl.Main.createSparkContext()           println("Spark context available as sc.")           _sc         }        """)      processLine("""         @transient val sqlContext = {           val _sqlContext = org.apache.spark.repl.Main.createSQLContext()           println("SQL context available as sqlContext.")           _sqlContext         }        """)      processLine("import org.apache.spark.SparkContext._")      processLine("import sqlContext.implicits._")      processLine("import sqlContext.sql")      processLine("import org.apache.spark.sql.functions._")    }  }  ...}

可以看出SparkILoop继承自scala.tools.nsc.interpreter.ILoop

紧接着着看了ILoop的api doc
终于找到了启动ILoop的方法:

import scala.tools.nsc.interpreter.ILoopimport scala.tools.nsc.Settingsval loop = new ILooploop.process(new Settings)

转载于:https://www.cnblogs.com/bluejoe/p/5115837.html

你可能感兴趣的文章
Python基础学习15--异常的分类与处理
查看>>
javascript运算符的优先级
查看>>
React + Redux 入门(一):抛开 React 学 Redux
查看>>
13位时间戳和时间格式化转换,工具类
查看>>
vue router-link子级返回父级页面
查看>>
C# 通知机制 IObserver<T> 和 IObservable<T>
查看>>
Code of Conduct by jsFoundation
查看>>
div 只显示两行超出部分隐藏
查看>>
C#小练习ⅲ
查看>>
debounce、throttle、requestAnimationFrame
查看>>
linux下的C语言快速学习—进程和文件
查看>>
电源防反接保护电路
查看>>
stm32 堆和栈(stm32 Heap & Stack)
查看>>
SpringMVC从入门到精通之第三章
查看>>
JS基础-dom操作
查看>>
【转】Android详细的对话框AlertDialog.Builder使用方法
查看>>
Unite Beijing 2015大型活动
查看>>
loading加载的代码
查看>>
PHP框架CI CodeIgniter 的log_message开启日志记录方法
查看>>
arraylist
查看>>