大家都知道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

从Spark1.6到Spark2.1,Logging该何去何从的更多相关文章

  1. Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行

    Hadoop生态圈-通过CDH5.15.1部署spark1.6与spark2.3.0的版本兼容运行 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我的CDH5.15.1集群中,默 ...

  2. 利用最新的CentOS7.5,hadoop3.1,spark2.3.2搭建spark集群

    1. 桥接模式,静态ip上外网:vi /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=EthernetPROXY_METHOD=noneBROWSER_ ...

  3. spark学习7(spark2.0集群搭建)

    第一步:安装spark 将官网下载好的spark-2.0.0-bin-hadoop2.6.tgz上传到/usr/spark目录下.这里需注意的是spark和hadoop有对应版本关系 [root@sp ...

  4. CDH-5.9.2整合spark2

    1.编写目的:由于cdh-5.9.2自带spark版本是spark1.6,现需要测试spark2新特性,需要整合spark2, 且spark1.x和spark2.x可以同时存在于cdh中,无需先删除s ...

  5. centos 7 cloudera-manager5.16.2,CDH5.16.2安装升级spark2.4.0

    1.在已经安装好系统的linux服务器上关闭selinux和iptables 2.在所有linux服务器上配置ntp服务并设置ntp时间同步 3.在所有linux服务器上安装好cm和cdh版本所需要对 ...

  6. 一篇文章看懂spark 1.3+各版本特性

    Spark 1.6.x的新特性Spark-1.6是Spark-2.0之前的最后一个版本.主要是三个大方面的改进:性能提升,新的 Dataset API 和数据科学功能的扩展.这是社区开发非常重要的一个 ...

  7. spark升级后 集成hbase-1.0.0-cdh5.4.5异常

    .具体场景如下: spark1.6  升级  spark2.2 后    分析查询hbase  数据报异常: 具体错误如下:       ERROR TableInputFormat: java.io ...

  8. Spark编译及spark开发环境搭建

    最近需要将生产环境的spark1.3版本升级到spark1.6(尽管spark2.0已经发布一段时间了,稳定可靠起见,还是选择了spark1.6),同时需要基于spark开发一些中间件,因此需要搭建一 ...

  9. Spark入门到精通--(第七节)环境搭建(服务器搭建)

    Spark搭建集群比较繁琐,需要的内容比较多,这里主要从Centos.Hadoop.Hive.ZooKeeper.kafka的服务器环境搭建开始讲.其中Centos的搭建不具体说了,主要讲下集群的配置 ...

随机推荐

  1. eas之执行sql的方式

    客户端:    1. 有返回集合:查询     //查询出DB中所有该字段的值,与其进行比较,若有相同的则报错      String sql="select CFWuliaoCode fr ...

  2. The story of one latency spike

    转自:https://blog.cloudflare.com/the-story-of-one-latency-spike/ A customer reported an unusual proble ...

  3. js中获取数组中的最大值最小值

    var a=[1,2,3,5]; alert(Math.max.apply(null, a));//最大值 alert(Math.min.apply(null, a));//最小值 多维数组可以这么修 ...

  4. 如何设置div自适应高度

    1.给div添加overflow属性 .div{ width:760px; overflow:hidden; } 2.其他的设置height:auto 等我测试没有效果

  5. JSONEncoder

    A flat implementation You could use something like this: from sqlalchemy.ext.declarative import Decl ...

  6. QT5的模块介绍【摘】

    Qt 5 模块分为 Essentials Modules 和 Add-on Modules 两部分.前者是基础模块,在所有平台上都可用:后者是扩展模块,建立在基础模块的基础之上,在能够运行 Qt 的平 ...

  7. android的数据与访问(2)-delphi xe7如何存取我的app配置参数文件?

    这种方法不推荐,因为该SharedPreference是android的方法.你想跨平台,在ios上就不能使用.建议还是用ini or xml.android因为读写该二种文件比较繁琐,所以推出自己简 ...

  8. 转载 - 算法实践——舞蹈链(Dancing Links)算法求解数独

    出处:http://www.cnblogs.com/grenet/p/3163550.html 在“跳跃的舞者,舞蹈链(Dancing Links)算法——求解精确覆盖问题”一文中介绍了舞蹈链(Dan ...

  9. (转载)Html解析工具Jsoup

    jsoup 简介Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTM ...

  10. [\S\s]+ 可以匹配多行html,最常用的还是.*?

    [\S\s]+ 可以匹配多行html,最常用的还是.*?