备忘录-SPARK源码

#备忘录 SPARK源码

两种构建方法,分别是maven和sbt。这里采用maven。 我的环境是

  • macOS Sierra
  • maven 3.5.0
  • scala 2.11
  • spark code 2.3.0
  • jdk8
  • Idea 2017

scala,java和maven首先肯定要安装好,详细安装步骤网上很多资料。 下面所有操作都是在Idea中完成

基本流程

  1. 点击[File]->[Open]选择你的spark跟路径。或者在控制台中cd到跟路径下执行[mvn idea:idea],然后就能构造一个idea的project工程。这里强烈推荐给maven加一个国内的mirror。
  2. 等全部完成后,用idea再build的话。可能会报某些class找不到,而且工程中的确没有这些class。这些是avro对象,代码是需要生成的。我这里遇到的模块是Flume Sink,打开Maven Projects窗口,在右击Flume Sink模块,选择[Generate sources and update folder]。现在利用Idea进行Build应该是没有问题的。
  3. 还有就是 sparksql 的 sql 语法解析也需要代码生成,同样的操作。如果生成代码后,parser.SqlBaseParser._ 依然无法找到,确认 target 目录下面的generated-sources 中的 antlr4是否为代码文件夹,如果不是的话,右击 antlr4 并选择[Mark Directory as]中的 [Generated Sources Root] 选项即可

  4. java.lang.ClassNotFoundException: org.apache.spark.sql.SparkSession 最后进行调试,这里还要做一些小修改。我这里执行的example模块下的JavaSparkPi类。可以先运行一下试试。可能会遇到的是报错是ClassNotFound的异常。把Project structure打开。切到examples模块下的dependencies标签页。会发现很多依赖的scope是provide,直接到pom文件中将scope都改成compile。
最近的文章

JAVA线程故事●线程安全

我计划将线程安全相关问题用一个系列来记录一下。其中包括线程安全,Java内存模型,对象共享,显示锁代码分析。这里偏重于记录核心概念股。首先给出参考内容 Chapter 17. Threads and Locks Java并发编程实战 深入理解Java虚拟机什么是线程安全对线程并行有一定了解的,肯定会有一个关于线程安全的概念。例如:多线程情况下程序执行无需额外动作,线程切换不会出现异常等等,诸如此类的理解。这些描述都没错,却不够精准,更没有指导意义,所以能算是定义。精准的线程安全的定义...…

继续阅读
更早的文章

Alluxio的FileInStream

为了方便以后更新Alluxio的client,所以把FileInStream的相关结构记录,以下记录基于alluxio-client-fs-1.6.1,主要关注于Local的Block。如果希望对自己有帮助,您需要对Alluxio整体结构,NIO的DirectByteBuffer有一个基本了解。整体结构一个完整FileInStream中最重要的是mCurrentBlockInStream的属性,其类型为BlockInStream,负责从块中读取数据。而一个Block中被划分为多个定长的Pa...…

继续阅读