实战Scala & Spark (1)
来源:互联网 发布:网络大屏广告机 编辑:程序博客网 时间:2024/05/17 07:00
本文使用Windows8.1平台。
下载Spark1.4.0带hadoop2.2.0支持的prebuild版本和源文件。安装到c:\spark-1.4.0(安装路径可以自己决定)。在c:\spark-1.4.0\bin目录下运行spark-shell命令,正常进入scala>状态,安装就好了。解压下载的source到c:\spark-1.4.0\src。在src目录下产生如下目录:assembly, bagel, …, repl ...等。
研究Spark-Shell命令:
在Spark中最主要的命令是spark-shell。启动后,用户可以在scala>状态输入自己的命令,执行scala语句等。哪spark-shell命令又是运行的什么呢?我们都知道Spark,Scala最后都会编译成Java的class,通过查看spark-shell命令,在spark-class2.cmd中,我们发现了Java命令调用:
"%RUNNER%"-cp %LAUNCH_CLASSPATH% org.apache.spark.launcher.Main %*> %LAUNCHER_OUTPUT%
于是在脚本中我们打印出LAUNCH_CLASSPATH和找到相应的Main文件。
Classpath:
C:\spark-1.4.0\bin\..\lib\spark-assembly-1.4.0-hadoop2.6.0.jar
org.apache.spark.launcher.Main是在目录:
C:\spark-1.4.0\src\launcher\src\main\java\org\apache\spark\launcher
下的Main.java文件,啊哈!作为Java高手们,下一步我们做什么呢。。。。
在c:\spark-1.4.0\src目录下的pom.xml文件中我们找到:
<scala.version>2.10.4</scala.version>
<scala.binary.version>2.10</scala.binary.version>
<java.version>1.6</java.version>
按照上述版本,设置好你的Java版本和scala版本。开始干吧!在spark-class2.cmd脚本中,Main.java运行的结果放到了%LAUNCHER_OUTPUT%文件中。修改Main.java,打印处运行参数,和检查相应的写入%LAUNCHER_OUTPUT%文件中的内容,我们发现运行spark-shell时,Main.java得到的参数是:
org.apache.spark.deploy.SparkSubmit
--class
org.apache.spark.repl.Main
而相应写入%LAUNCHER_OUTPUT%文件中的命令是:
C:\jdk1.8.0_60\bin\java-cp"C:\spark-1.4.0\bin\..\conf\;C:\spark-1.4.0\bin\..\lib\spark-assembly-1.4.0-hadoop2.6.0.jar;C:\spark-1.4.0\bin\..\lib\datanucleus-api-jdo-3.2.6.jar;C:\spark-1.4.0\bin\..\lib\datanucleus-core-3.2.10.jar;C:\spark-1.4.0\bin\..\lib\datanucleus-rdbms-3.2.9.jar""-Dscala.usejavacp=true" -Xms512m -Xmx512morg.apache.spark.deploy.SparkSubmit--class org.apache.spark.repl.Main spark-shell
从上面的研究,我们得到spark-shell最终运行了SparkSubmit和相应的运行参数。为了让Spark运行我们自己的版本,需要修改Main.java使其把spark-assembly-1.4.0-hadoop2.6.0.jar指到到我们自己版本的地方,如:C:\spark-1.4.0\bin\..\lib\classes。而SparkSubmit调用的最重要的类是SparkILoop.scala,位于:
C:\spark-1.4.0\src\repl\scala-2.10\src\main\scala\org\apache\spark\repl
简单修改,编译后,我们得到了自己的Spark运行版本:
15/10/2021:02:07 WARN NativeCodeLoader: Unable to load native-hadoop libraryfo
ryour platform... using builtin-java classes where applicable
Welcometo
____ __
/__/__ ___ _____/ /__
_\\/ _ \/ _ `/ __/ '_/
/___/.__/\_,_/_/ /_/\_\ version 1.4.0
/_/
(o-o)
(Hello,I'm Tony Spark!)
UsingScala version 2.10.4 (Java HotSpot(TM) 64-Bit Server VM, Java1.8.0_60)
Typein expressions to have them evaluated.
Type:help for more information.
Sparkcontext available as sc.
15/10/2021:02:25 WARN Connection: BoneCP specified but not present inCLASSPATH
(orone of dependencies)
15/10/2021:02:26 WARN Connection: BoneCP specified but not present inCLASSPATH
(orone of dependencies)
15/10/2021:02:46 WARN ObjectStore: Version information not found inmetastore.
hive.metastore.schema.verificationis not enabled so recording the schema versio
n0.13.1aa
SQLcontext available as sqlContext.
scala>
SparkSubmit.scala
在目录C:\spark-1.4.0\src\core\src\main\scala\org\apache\spark\deploy下。
编译:
C:\spark-1.4.0\src\launcher\src\main\java>javac-classpath C:\spark-1.4.0\lib\classes -d C:\spark-1.4.0\lib\classesorg\apache\spark\launcher\Main.java
C:\spark-1.4.0\src\repl\scala-2.10\src\main\scala>scalac-cp c:\spark-1.4.0\lib\classes -d c:\spark-1.4.0\lib\classesorg\apache\spark\repl\SparkILoopInit.scala
- 实战Scala & Spark (1)
- 实战Scala & Spark (2)
- 实战Scala & Spark (3)
- Spark实战----(1)使用Scala开发本地测试的Spark WordCount程序
- Spark 实战,第 1 部分: 使用 Scala 语言开发 Spark 应用程序
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第2小节:动手实战Scala面向对象编程(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第3小节:动手实战Scala函数式编程(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(1)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(2)
- 【Spark亚太研究院系列丛书】Spark实战高手之路-第2章动手实战Scala第1小节:动手体验Scala(3)
- Spark基础-Scala学习1
- Spark经典视频之Scala中复合类型实战详解
- Spark经典视频之Scala中Self Types实战详解
- Spark视频之Scala中Dependency Injection实战详解
- Spark经典视频之Scala中Abstract Types实战详解
- Spark进阶视频之Scala中隐式类代码实战详解
- Spark进阶视频之Scala界面Panel、Layout实战详解
- Scala中隐式转换初体验实战及spark中应用
- P1005 采药
- 使用GDB调试的一个常见失误
- 发博客测csdn博客
- 初识敏捷开发
- 成员函数指针与高效C++委托 (delegate)
- 实战Scala & Spark (1)
- 黑马程序员--Java学习日记之eclipse开发工具的熟练使用
- HDOJ 1754 I Hate It(线段树—求区间最大值与单点更新)
- Android中measure过程、WRAP_CONTENT详解以及 xml布局文件解析流程浅析
- Android多媒体的删除
- iOS开发中常用的第三方插件和框架小结
- 关系数据库标准语言SQL基础2
- 耶鲁大学教授:研究生做科研的11条军规
- char 转 int 型