大家都知道spark 1.6.0版本比较稳定,也比较流行。

我们项目组也是,最初用的就是这个版本。

这段时间,项目组引入spark 2.1.0版本,我想尝尝鲜。

Pom中刚刚换了dependency马上编译失败了。

首先是在1.6中用的最多的trait之一org.apache.spark.Logging 在2.1中变成了org.apache.spark.internal.Logging

看着internal就觉得不对劲,细看定义果然:

private[spark] trait Logging {…}

而1.6中的定义是这样儿的

@DeveloperApi

trait Logging {…}

看不懂二者的区别没关系,因为当你把

import org.apache.spark.Logging

改成

import org.apache.spark.internal.Logging

IDEA会提醒你“Symbol Logging is inaccessible from this place”

简单说你不能用。

还是得回去理解源码啊。

1.6中的注解 @DeveloperApi就不用解释什么了,开发者API

2.1中的private[spark]是啥意思呢?

private[SomePackage] means, it is visible inside the package only (no modifier in Java)

protected[SomePackage] means, it can be seen in sub-classes but only if they are inside SomePackage

好吧,只能在package中用…

我不死心,又去官方API 看了下,赫然写着:

“NOTE: DO NOT USE this class outside of Spark. It is intended as an internal utility. This will likely be changed or removed in future releases.”

人家早就打算只是内部使用了。。。

那就没有替代方案了吗。。。

目前看来只能老老实实地像下面这样使用了:

protected final val logger : Logger= LoggerFactory.getLogger(this.getClass())

logger.info("handline file:{}",f.getPath)

另外,版本升级是一个渐进的过程,pom.xml中可能既存在1.6的包又存在2.1的包,以下这个异常可能会让人迷惑:

java.lang.NoClassDefFoundError: org/codehaus/commons/compiler/UncheckedCompileException java.lang.ClassNotFoundException: org.codehaus.commons.compiler.UncheckedCompileException

罪魁祸首是库共享编译器。

把以下dependency添加到pom.xml中就OK了:

<dependency>

<groupId>org.codehaus.janino</groupId>

<artifactId>commons-compiler</artifactId>

<version>2.7.8</version>

</dependency>

等有其他的东西,再补充。

参考:

http://spark.apache.org/docs/1.6.0/api/scala/index.html#org.apache.spark.Logging

https://stackoverflow.com/questions/42352091/spark-sql-fails-with-java-lang-noclassdeffounderror-org-codehaus-commons-compil?s=1|20.5422

最新文章

  1. PHP练习题
  2. HTML5移动端图片上传模块
  3. MySQL中concat函数
  4. poj1328解题报告(贪心、线段交集)
  5. Contest1065 - 第四届“图灵杯”NEUQ-ACM程序设计竞赛(个人赛)C粉丝与汉诺塔
  6. javascript 小计
  7. Android @+id与@id的区别
  8. Java 实现观察者(Observer)模式
  9. Myeclipse添加struts2支持后取消操作
  10. SPARK 学习笔记一
  11. Jmeter学习系列----1 环境搭建
  12. 一张图了解Spring Cloud微服务架构
  13. linux command wc
  14. SQLSERVER中的人民币数字转大写的函数实现
  15. MYSQLDUMP参数详解(转)
  16. 01 Developing Successful Oracle Application
  17. Python学习札记(三十六) 面向对象编程 Object Oriented Program 7 __slots__
  18. Nodejs实战 —— 测试 Node 程序
  19. linux部署j2eeweb工程涉及到的指令
  20. wxGridCellEditor

热门文章

  1. 【udacity】机器学习-knn最近邻算法
  2. HTML 1.1页面js修改文字颜色
  3. 【剑指Offer】28、数组中出现次数超过一半的数字
  4. 文件元数据、文件夹操作(day08)
  5. 用windows远程桌面连接ubuntu
  6. [bzoj2131]免费的馅饼_树状数组
  7. POJ 2831
  8. hdu - 4920 - Matrix multiplication(缓存优化+开挂)
  9. 【cl】cmd相关命令
  10. 屏幕測试亮点,新买了一个显示器,使用web简单的測试下了亮点