首页 > 其他 > 详细

spark阅读调试环境搭建

时间:2019-12-23 21:10:41      阅读:79      评论:0      收藏:0      [点我收藏+]

我是参考这边博客搭建spark环境,同时整理了一些遇到的问题

准备环境

  1. 从github上下载spark相关版本的代码
    • 可以通过git来下载,也可以选择相应的版本打包下载到本地,然后解压
  2. 安装scala(这里选择的版本,需要根据下载的spark源码版本中依赖的scala大版本)
  3. 安装jdk(jdk1.8以上,这个可以根据下载的spark源码中依赖的jdk版本,不过jdk1.8以上目前基本上不会有问题)
  4. 安装maven
    • 修改maven仓库,使用aliyun的镜像仓库(默认使用的是maven中央仓库网络原因,在后面编译下载pom依赖时可能会比较慢,所以这里换成国内aliyun的镜像仓库)

      <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
      </mirror>
      在setting文件中的mirrors中添加上面的代码块
  5. 安装IDE,并安装对应的scala的插件,这部分网上有很多资料,我使用的是idea,可以参考idea搭建spark开发环境
    • 安装idea的社区版或专业版(社区版就满足需求)
    • 安装idea的scala插件(这块可以在idea中安装,也可以先到idea官网,下载idea对应的scala插件版本,然后选择从磁盘安装)
  6. 从github上下载spark相关版本的代码
    • 可以通过git来下载,也可以选择相应的版本打包下载到本地,然后解压

spark代码导入IDE中

  1. 为了后面编译代码方便,先修改项目根目录下的pom.xml文件中的一些依赖
    • 将依赖的maven版本修改为本地安装的maven版本
    • 将依赖的jdk版本修改为本地安装的jdk版本
  2. 因为有些文件需要先编译才能生成,所以,调试前,代码是需要编译一次的
    • 方法1:先maven编译一边,然后作为普通的maven项目导入到idea中

      mvn -T 4 -DskipTests clean package
        注:-T为编译时启动的线程数
            -DskipTests 跳过测试
    • 方法2:直接作为maven项目导入idea,然后点击idea中右侧maven栏中的“Generate Sources and Update Folders For All Projects”
      • Generate Sources and Update Folders For All Projects 的作用相当于方法一中的 mvn package
      • 之后等待包导入

本地IDE运行spark自带样例

  1. 在idea中新添加一个application,并选择example中的样例,可以运行JavaLogQuery或JavaWordCount测试
  2. 这部分链接中的博客也有说明
  3. 运行配置中需要在VM options中添加下面的参数 -Dspark.master=local

可能遇到的问题及解决思路

运行程序时,可能遇到两种错误

  1. 类似:not found: type SparkFlumeProtocol...
    原因:代码中缺少依赖的类或方法
    解决:idea中,右击maven,选择指定模块,然后右击并选择Generate Sources and Update Folders
    如上则选择“Spark Project External Flume Sink”模块,然后执行"Generate...."
    效果相同的操作为cd external\flume-sink --> mvn -DskipTests clean package

  2. 类似:
    java.lang.ClassNotFoundException: org.spark_project.guava.cache.CacheLoader
    原因:执行时缺少依赖jar包,这个问题主要会出现在用idea执行代码时候
    因为pom中依赖的包多为provided,打包时并不会将这些依赖的包打进去,所以执行时会NotFound
    解决:在要执行的模块的dependencies中添加缺少的jar包,
    如果是spark模块的的包,则通过添加模块target中的jar,
    如果是dependencies中已有的jar,则将scope的“provided”改为“compile”
    注意:执行时可能会有很多ClassNotFound,需要依次将provided改为compile

参考博客:
https://www.cnblogs.com/listenfwind/p/11421206.html
https://cloud.tencent.com/developer/article/1010919

spark阅读调试环境搭建

原文:https://www.cnblogs.com/pearsonlee/p/12087928.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!