大家都知道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. HTTP数据包详解

     无论Web技术在未来如何发展,理解Web程序之间通信的基本协议相当重要, 因为它让我们理解了Web应用程序的内部工作. 本文将对HTTP协议进行详细的实例讲解,内容较多,希望大家耐心看. 阅读目录 ...

  2. vue自定义拖动指令

    1.在项目开发中,需要对div进行拖动.因为需要自定义组件 a>定义全局拖拽指令: 定义全局指令,需要在main.js中写入vue.directive('drag',{});即可.但是一般会在外 ...

  3. 11. IDEA 在同一工作空间创建多个项目

    1.创建项目 二..创建工作空间 JavaWorkspace 1.File-> New Project -> 创建工作空间 JavaWorkspace,并 顺便创建项目 JavaOne 2 ...

  4. C# DataGridView 使用

    之前咩有做个界面的东西,更没有使用过DataGirdView 这个控件. 现在本来是准备用DeV呢,结果发现我的DEV没有注册,只好暂时用这个DataGridView来替代使用了. 我现在要是设置两列 ...

  5. Mysql学习总结(12)——21分钟Mysql入门教程

    21分钟 MySQL 入门教程 目录 一.MySQL的相关概念介绍 二.Windows下MySQL的配置 配置步骤 MySQL服务的启动.停止与卸载 三.MySQL脚本的基本组成 四.MySQL中的数 ...

  6. LCS,LIS,LCIS

    网站:CSUST 8月3日(LCS,LIS,LCIS) LCS:      以下讲解来自:http://blog.csdn.net/yysdsyl/article/details/4226630 [问 ...

  7. dubbo-dubboAdmin安装(一)

    简介 Dubbo是什么? dubbo是阿里开源的分布式服务治理框架,对服务的负载均衡,权重,监控,路由规则,禁用启用的管理,以及服务的自动注册和发现 分布式架构下面临问题 在分布式架构下,我们会将一个 ...

  8. Spring 属性输入和实例化操作_总结

    Spring 之 applicationContext.xml  配置 默认实例化(无参构造) //被实例化对象 package cn.ibbidream.Bean; public class Bea ...

  9. mysql5.7忘记root密码

    systemctl stop mysqld.service vi /etc/my.cnf [mysqld] skip-grant-tables skip-networking mysql -uroot ...

  10. _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径

    #pragma once #include<stdio.h> #include<stdlib.h> #define StackSize 100 typedef int Data ...