spark wordcount程序
spark wordcount程序 IllegalAccessError错误
这个错误是权限错误,错误的引用方法,比如方法中调用private,protect方法。
当然大家知道wordcount业务很简单,都是调用依赖的方法,最后在一篇博客讲了错误:spark 2.2 读取 Hadoop3.0 数据异常
我试了下,解决了,我没有像他依赖那么多。
Exception in thread "main" java.lang.IllegalAccessError: class org.apache.hadoop.hdfs.web.HftpFileSystem cannot access its superinterface org.apache.hadoop.hdfs.web.TokenAspect$TokenManagementDelegator
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
        at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:348)
        at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:370)
        at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404)
        at java.util.ServiceLoader$1.next(ServiceLoader.java:480)
        at org.apache.hadoop.fs.FileSystem.loadFileSystems(FileSystem.java:3202)
        at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:3247)
        at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:3286)
        at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:123)
        at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:3337)
        at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:3305)
        at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:476)
        at org.apache.spark.util.Utils$.getHadoopFileSystem(Utils.scala:1857)
        at org.apache.spark.scheduler.EventLoggingListener.<init>(EventLoggingListener.scala:68)
        at org.apache.spark.SparkContext.<init>(SparkContext.scala:532)
问题分析
我使用cdh安装spark的,spark版本是2.4.0,hadoop是hadoop3.0.0。我特地看下idea的extern依赖包,hadoop的依赖包是2.6.X。
这样的看存在使用的spark包依赖hdoop包版本与生产环境上的hadoop版本不一致。
解决方式就是spark的依赖hadoop,我屏蔽掉,重新手动导入hadoop包
解决方式
    <properties>
        <hbase.version>2.0.0</hbase.version>
        <spark.version>2.4.0</spark.version>
        <scala.version>2.11.12</scala.version>
        <hadoop.version>3.0.0</hadoop.version>
    </properties>
    <dependencies>
<!--        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.12</artifactId>
            <version>${spark.version}</version>
            <scope>provided</scope>
        </dependency>-->
<!--        解决IllegalAccessError-->
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.11</artifactId>
            <version>${spark.version}</version>
            <exclusions>
                <exclusion>
                    <artifactId>hadoop-client</artifactId>
                    <groupId>org.apache.hadoop</groupId>
                </exclusion>
            </exclusions>
        </dependency>
</dependencies>
附录 wordcount程序
package com.learn.hadoop.spark.wordcount;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import org.apache.spark.api.java.function.VoidFunction;
import scala.Tuple2;
import java.util.Arrays;
import java.util.Iterator;
public class WordCount {
    public static void main(String[] args) {
        if(args ==null ||args.length<1)
        {
            System.err.println("please input paths");
            System.exit(1);
        }
        String outfile =args[0];
        SparkConf sparkConf =new SparkConf().setMaster("local").setAppName("wordCount");
        JavaSparkContext sc =new JavaSparkContext(sparkConf);
        String inputFile="README.MD";
        JavaRDD<String> input =sc.textFile(inputFile);
        JavaRDD<String> lines =input.flatMap(new FlatMapFunction<String, String>() {
            @Override
            public Iterator<String> call(String s) throws Exception {
                return Arrays.asList(s.split(" ")).iterator();
                //return null;
            }
        });
        //paris
        JavaPairRDD<String,Integer> paris = lines.mapToPair(new PairFunction<String, String, Integer>() {
            @Override
            public Tuple2<String, Integer> call(String s) throws Exception {
                return new Tuple2<String,Integer>(s,1);
            }
        });
        //redues
        JavaPairRDD<String,Integer> counts=paris.reduceByKey(new Function2<Integer, Integer, Integer>() {
            @Override
            public Integer call(Integer integer, Integer integer2) throws Exception {
                return integer+integer2;
            }
        });
        //output
        counts.foreach(new VoidFunction<Tuple2<String, Integer>>() {
            @Override
            public void call(Tuple2<String, Integer> stringIntegerTuple2) throws Exception {
                System.out.println(stringIntegerTuple2);
            }
        });
        counts.saveAsTextFile(outfile);
        sc.stop();
    }
}
spark wordcount程序的更多相关文章
- 大数据笔记(二十八)——执行Spark任务、开发Spark WordCount程序
		一.执行Spark任务: 客户端 1.Spark Submit工具:提交Spark的任务(jar文件) (*)spark提供的用于提交Spark任务工具 (*)example:/root/traini ... 
- idea配置scala编写spark wordcount程序
		1.创建scala maven项目 选择骨架的时候为org.scala-tools.archetypes:scala-aechetype-simple 1.2 2.导入包,进入spark官网Docum ... 
- [转] 用SBT编译Spark的WordCount程序
		问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? [sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需 ... 
- 用SBT编译Spark的WordCount程序
		问题导读: 1.什么是sbt? 2.sbt项目环境如何建立? 3.如何使用sbt编译打包scala? sbt介绍 sbt是一个代码编译工具,是scala界的mvn,可以编译scala,java等,需要 ... 
- 编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本]
		编写Spark的WordCount程序并提交到集群运行[含scala和java两个版本] 1. 开发环境 Jdk 1.7.0_72 Maven 3.2.1 Scala 2.10.6 Spark 1.6 ... 
- 将java开发的wordcount程序提交到spark集群上运行
		今天来分享下将java开发的wordcount程序提交到spark集群上运行的步骤. 第一个步骤之前,先上传文本文件,spark.txt,然用命令hadoop fs -put spark.txt /s ... 
- spark学习11(Wordcount程序-本地测试)
		wordcount程序 文件wordcount.txt hello wujiadong hello spark hello hadoop hello python 程序示例 package wujia ... 
- 大话Spark(3)-一图深入理解WordCount程序在Spark中的执行过程
		本文以WordCount为例, 画图说明spark程序的执行过程 WordCount就是统计一段数据中每个单词出现的次数, 例如hello spark hello you 这段文本中hello出现2次 ... 
- 55、Spark Streaming:updateStateByKey以及基于缓存的实时wordcount程序
		一.updateStateByKey 1.概述 SparkStreaming 7*24 小时不间断的运行,有时需要管理一些状态,比如wordCount,每个batch的数据不是独立的而是需要累加的,这 ... 
随机推荐
- 如何在Access中使用SQL语句
			如何在Access中使用SQL语句 创建,查询设计,弹出[显示表]窗口,点击[关闭]将该窗口关掉.这时软件会进入[设计]工具栏,我们点击工具栏左侧的[SQL视图].[SQL视图]默认选择的是[设计视图 ... 
- CDH仅完成 0/3 个步骤。首个失败:主机 node6 (id=2) 上的客户端配置 (id=1) 已使用 1 退出,而预期值为 0。
			CDH仅完成 0/3 个步骤.首个失败:主机 node6 (id=2) 上的客户端配置 (id=1) 已使用 1 退出,而预期值为 0 javaHome出现了问题 JAVA_HOME并不是根据环境 ... 
- 吴裕雄 python 机器学习——数据预处理正则化Normalizer模型
			from sklearn.preprocessing import Normalizer #数据预处理正则化Normalizer模型 def test_Normalizer(): X=[[1,2,3, ... 
- 网络技能大赛A卷测试
			这个测试对我来言有些难度,短时间内做不了太多.首先是思路的理清,登录后的界面有好几种,而且公文的状态也有好几种.理清思路就花了一些时间 然后大致的框架做了做,然后将用户的增删改查还有公文的增删改查写了 ... 
- Chinese Window Lattice And CSS
			谁向云端着此亭,檐前树木映窗棂.-- 释绍嵩<陪赵知府登桃岭山亭> (image from 中国窗棂) The traditional Chinese window lattice has ... 
- Centos7 ISCSI配置 完全攻略
			Centos7 ISCSI配置 完全攻略 一. iscsi简单介绍 iSCSI( Internet Small Computer System Interface 互联网小型计算机系统接口) iscs ... 
- 详解Django中Request对象的相关用法
			原文链接:http://www.jb51.net/article/69624.htm 1.从Request对象中获取数据 我们在第三章讲述View的函数时已经介绍过HttpRequest对象了,但当时 ... 
- Django - 后台admin不显示带auto_now, auto_now_add选项的字段
			https://stackoverflow.com/questions/6386172/datetimefield-doesnt-show-in-admin-system 解决办法 class Rat ... 
- HGAME 2020 misc
			week1 每日推荐 拿到Wireshark capture file后,按常规思路,用foremost命令拿到一个加密的压缩包,之后文件->导出对象->http,看到最大的一个文件里面最 ... 
- LeetCode 42接雨水 按行求解(差分+排序)
			按行求解的思路比较清晰明了,但是这个方法的复杂度高达O(heightSize*sum(height[i])),几乎高达O(N^2). 但是也并不是不可以解决,经观察我们可以发现,这个算法的缺点在于要遍 ... 
