sparkbug实践(包含的bug:classcastexception;connectexception;noclassdeffounderror;runtimeexceptio等。。。。)(代码片

wr456wr wr456wr     2022-11-29     228

关键词:

文章目录

环境

scala版本:2.11.8
jdk版本:1.8
spark版本:2.1.0
hadoop版本:2.7.1
ubuntu版本:18.04
window版本:win10

scala代码在windows端编程,ubuntu在虚拟机安装,scala,jdk,spark,hadoop都安装在ubuntu端

问题一

问题描述:在使用wget下载scala时,出现 Unable to establish SSL connection

解决:

加上跳过验证证书的参数--no-check-certificate

问题二

问题描述:在使用scala程序测试wordCount程序时出现错误:

(scala程序在主机,spark安装在虚拟机)

22/06/20 22:35:38 INFO StandaloneAppClient$ClientEndpoint: Connecting to master spark://192.168.78.128:7077...
22/06/20 22:35:41 WARN StandaloneAppClient$ClientEndpoint: Failed to connect to master 192.168.78.128:7077
org.apache.spark.SparkException: Exception thrown in awaitResult: 
	at org.apache.spark.util.ThreadUtils$.awaitResult(ThreadUtils.scala:226)
	...
	Caused by: io.netty.channel.AbstractChannel$AnnotatedConnectException: Connection refused: no further information: /192.168.78.128:7077
Caused by: java.net.ConnectException: Connection refused: no further information

解决:

对spark下的conf目录内的spark-env.sh进行配置如下

配置后在spark目录下启动master和worker

bin/start-all.sh

之后再次运行wordCount程序,出现如下错误

Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
22/06/20 22:44:09 INFO SparkContext: Running Spark version 2.4.8
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration$DeprecationDelta
	at org.apache.hadoop.mapreduce.util.ConfigUtil.addDeprecatedKeys(ConfigUtil.java:54)
	at org.apache.hadoop.mapreduce.util.ConfigUtil.loadResources(ConfigUtil.java:42)
	at org.apache.hadoop.mapred.JobConf.<clinit>(JobConf.java:123)

在pom文件内引入hadooop依赖

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-core</artifactId>
            <version>1.2.1</version>
</dependency>

刷新依赖后运行程序,出现:

22/06/20 22:50:31 INFO spark.SparkContext: Running Spark version 2.4.8
22/06/20 22:50:31 INFO spark.SparkContext: Submitted application: wordCount
22/06/20 22:50:31 INFO spark.SecurityManager: Changing view acls to: Administrator
22/06/20 22:50:31 INFO spark.SecurityManager: Changing modify acls to: Administrator
22/06/20 22:50:31 INFO spark.SecurityManager: Changing view acls groups to: 
22/06/20 22:50:31 INFO spark.SecurityManager: Changing modify acls groups to: 
22/06/20 22:50:31 INFO spark.SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users  with view permissions: Set(Administrator); groups with view permissions: Set(); users  with modify permissions: Set(Administrator); groups with modify permissions: Set()
Exception in thread "main" java.lang.NoSuchMethodError: io.netty.buffer.PooledByteBufAllocator.metric()Lio/netty/buffer/PooledByteBufAllocatorMetric;
	at org.apache.spark.network.util.NettyMemoryMetrics.registerMetrics(NettyMemoryMetrics.java:80)
	at org.apache.spark.network.util.NettyMemoryMetrics.<init>(NettyMemoryMetrics.java:76)

更新spark-core依赖版本,原本是2.1.0,现在更新为2.3.0,spark-core的pom依赖如下

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_2.10</artifactId>
            <version>2.3.0</version>
</dependency>

刷新依赖后再次运行又出现连接问题

修改pom依赖为

<dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mesos_2.11</artifactId>
            <version>2.1.0</version>
</dependency>
        

刷新后再次报错:java.lang.RuntimeException: java.lang.NoSuchFieldException: DEFAULT_TINY_CACHE_SIZE

添加io.netty依赖

<dependency>
                <groupId>io.netty</groupId>
                <artifactId>netty-all</artifactId>
                <version>4.0.52.Final</version>
</dependency>

运行后再次出现连接问题

查看虚拟机的spark的master启动情况

确实都启动成功,排除未启动成功原因

修改spark的conf下的spark-env .sh文件

重新启动spark

sbin/start-all.sh

启动程序后成功连接到虚拟机的spark的master

问题三

问题描述:

运行scala的wordCount出现:com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.13.0

这是由于Jackson这个工具库的版本不一致导致的。解决方案:首先在Kafka的依赖项中,排除对于Jackon的依赖,从而阻止Maven自动导入高版本的库,随后手动添加较低版本Jackon库的依赖项,重新import即可。

添加依赖:

<dependency>
            <groupId> org.apache.kafka</groupId>
            <artifactId>kafka_2.11</artifactId>
            <version>1.1.1</version>
            <exclusions>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.6</version>
</dependency>

导入后重新运行程序,再次出现问题:

NoClassDefFoundError: com/fasterxml/jackson/core/util/JacksonFeature

原因是jackson依赖不全,导入jackson依赖

<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.6.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.6.7</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.6.7</version>
</dependency>

再次运行出现:Exception in thread “main” java.net.ConnectException: Call From WIN-P2FQSL3EP74/192.168.78.1 to 192.168.78.128:9000 failed on connection exception: java.net.ConnectException: Connection refused: no further information; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)

推测这应该是hadoop连接拒绝,而不是spark的master连接问题

修改hadoop的etc下的core-site.xml文件

之后重新启动hadoop运行程序,出现新的问题:

WARN scheduler.TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 0.0.0.0, executor 0): java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.rdd.RDD.org$apache$spark$rdd$RDD$$dependencies_ of type scala.collection.Seq in instance of org.apache.spark.rdd.MapPartitionsRDD
	at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues(ObjectStreamClass.java:2301)
	at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass.java:1431)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2411)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667)
	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2405)
	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2329)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2187)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1667)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:503)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:461)
	at org.apache.spark.serializer.JavaDeserializationStream.readObject(JavaSerializer.scala:75)
	at org.apache.spark.serializer.JavaSerializerInstance.deserialize(JavaSerializer.scala:114)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:85)
	at org.apache.spark.scheduler.ShuffleMapTask.runTask(ShuffleMapTask.scala:53)
	at org.apache.spark.scheduler.Task.run(Task.scala:99)
	at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:282)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

从问题截图应该可以看到连接应该是没有问题的,以及开始了预定的wordCount工作,这次可能是代码层面的问题。

wordCount完整scala代码:

import org.apache.spark.SparkConf, SparkContext

object WordCount 
  def main(arg: Array[String]): Unit = 
    val ip = "192.168.78.128";
    val inputFile = "hdfs://" + ip + ":9000/hadoop/README.txt";
    val conf = new SparkConf().setMaster("spark://" + ip + ":7077").setAppName("wordCount");
    val sc = new SparkContext(conf)
    val textFile = sc.textFile(inputFile)
    val wordCount = textFile.flatMap(line => line.split(" "))
      .map(word => (word, 1)).reduceByKey((a, b) => a + b)
    wordCount.foreach(println)
  


需要设置jar包,将项目进行打包

然后打包后的项目在target路径下,找到对应jar包位置,复制

复制路径添加到配置setJar方法内,完整Scala WordCount代码

import org.apache.spark.SparkConf, SparkContext



object WordCount 
  def main(arg: Array[String]): Unit = 
    //打包后的jar包地址
    val jar = Array[String]("D:\\\\IDEA_CODE_F\\\\com\\\\BigData\\\\Proj\\\\target\\\\Proj-1.0-SNAPSHOT.jar")
    //spark虚拟机地址
    val ip = "192.168.78.129";
    val inputFile = "hdfs://" + ip + ":9000/hadoop/README.txt";
    val conf = new SparkConf()
      .setMaster("spark://" + ip + ":7077") //master节点地址
      .setAppName("wordCount")      //spark程序名
      .setSparkHome("/root/spark")  //spark安装地址(应该可以不用)
      .setIfMissing("spark.driver.host", "192.168.1.112")
      .setJars(jar) //设置打包后的jar包
    val sc = new SparkContext(conf)
    val textFile = sc.textFile(inputFile)
    val wordCount = textFile.flatMap(line => line.split(" "))
      .map(word => (word, 1)).reduceByKey((a, b) => a + b)
	val str1 = textFile.first()
    println("str: " + str1)
    val l = wordCount.count()
    println(l)
    println("------------------")
    val tuples = wordCount.collect()
    tuples.foreach(println)
    sc.stop()
  


运行的大致结果:


md,csdn什么时候可以直接导入markdown完整文件啊,™每次本机写完导入图片都无法直接导入,还要一个一个截图粘贴上去

腾讯bugly干货分享微信android热补丁实践演进之路

本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1264&extra=page%3D1继插件化后,热补丁技术在2015年开始爆发,目前已经是非常热门的Android开发技术。其中比较著... 查看详情

实践关于p标签内嵌p标签的bug

项目中遇到了一点小问题:是这样的,在输入框包裹元素p标签中想内嵌一个p标签用作显示提示字符,谁知发生了一下一幕:页面结构:<pclass="modify-info-wrap"><span>二级导航明细:</span><textareaname="second-childNav-content"... 查看详情

一次jvm实践没错,老板让我写个bug!(代码片段)

http://www.cnblogs.com/crossoverJie/archive/2018/12/12/10106154.html 前言标题没有看错,真的是让我写个bug!刚接到这个需求时我内心没有丝毫波澜,甚至还有点激动。这可是我特长啊;终于可以光明正大的写bug了??。先来看看具体是要干... 查看详情

什么是功能/错误发布的良好 SVN 最佳实践?

】什么是功能/错误发布的良好SVN最佳实践?【英文标题】:WhatisagoodSVNbestpracticeforfeature/bugreleases?【发布时间】:2011-10-0415:19:20【问题描述】:我在***上阅读了几个问题,但并不十分满意。我现在的情况如下:大型网络应用项目... 查看详情

研效优化实践:ai算法助力深层bug挖掘

导语随着产品在线上的持续运营,产品在线上的规模越来越大,功能也越来越复杂。产品体量的增长对质量要求越来越高。为了达到更高的质量要求,必然需要想办法增加测试的强度,但用传统的手工写用例自动... 查看详情

我实践中的mvp架构

我实践中的mvp架构在Android开发实践中,我也深刻理解到一个项目的架构稀烂会带来什么,成天的找bug,解决了一个bug,又出现了两个bug,这样的事肯定会经常出现。所以呢我决定使用传说中的mvp,这是15年... 查看详情

实体框架中多个“包含”的最佳实践是啥?

】实体框架中多个“包含”的最佳实践是啥?【英文标题】:Whatisthebestpracticeformultiple"Include"-sinEntityFramework?实体框架中多个“包含”的最佳实践是什么?【发布时间】:2013-07-0523:19:27【问题描述】:假设我们在数据模型... 查看详情

正确包含 PHP 中的设计实践 [关闭]

】正确包含PHP中的设计实践[关闭]【英文标题】:ProperincludedesignpracticeinPHP[closed]【发布时间】:2014-11-3019:39:00【问题描述】:我刚刚开始研究一个更大的预先存在的代码库(PHP),我注意到很多这些文件以不可读的方式使用包含/要... 查看详情

设置 tsconfig“文件”与“包含”的最佳实践?

】设置tsconfig“文件”与“包含”的最佳实践?【英文标题】:Bestpracticetosetuptsconfig"files"vs"include"?【发布时间】:2019-01-1923:57:26【问题描述】:我想知道在tsconfig中使用“文件”与“包含”有什么好处和优缺点?... 查看详情

android内存优化总结&实践

...p://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQAndroid内存优化总结&实践原创2017-03-23IBGJOOX团队腾讯Bugly腾讯Bugly腾讯Bugly微信号weixinBugly功能介绍腾讯Bugly-Crash监控,能帮助移动互联网开发者更及时地发现掌控异常,更全面地了解定... 查看详情

软工实践产品个人分析

第一部分调研,评测调研个人第一次上手体验:感觉很久没有维护的样子,第一次很难上手,没有具体的指引。BUG:课程表不能使用成绩查询年份选择只有以前的年份,选择不了现在的年份。未发现bug的原因:开发的时间和精力... 查看详情

数据测试实践:从一个bug开始的大数据引擎兼容性探索

...索结果。本文将从一个年度账单bug引入,讲解在数据测试实践中对大数据执行引擎兼容性差异的探索。一、需求内容京东-我的京东-年度账单是一年一次,以用户视角对在平台一年的消费情况进行总结。账单从购物,权益,服务... 查看详情

包含来自多个源表的数据的维度中自然键的最佳实践

】包含来自多个源表的数据的维度中自然键的最佳实践【英文标题】:Bestpracticefornaturalkeysinadimensionthatincludesdatafrommultiplesourcetable【发布时间】:2015-06-0219:22:37【问题描述】:我正在为一个数据仓库设计一个维度,其中包含来自... 查看详情

如何创建一个包含另一个集合的 ObjectId 数组的文档(最佳实践,RESTful)?

...如何创建一个包含另一个集合的ObjectId数组的文档(最佳实践,RESTful)?【英文标题】:HowtocreateadocumentthatincludesanarrayofObjectIdsofanothercollection(best-practice,RESTful)?【发布时间】:2019-10-2205:19:58【问题描述】:使用Mongoose和RESTfulAPI我... 查看详情

常见面试提

1.一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?   一个软件缺陷通常包含:测试环境(操作系统、硬件等)、使用的测试产品版本号,bug类型,bug严重程度,bug重现步骤... 查看详情

bug的概念和分类

...做了解释,感兴趣的点击链接回顾。一条Bug记录最基本应包含:※bug编号:bug的唯一id,以方便尽快找到此bug。※bug标题:bug摘要,阐述bug大体内容。※bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素... 查看详情

在 vue 中呈现包含组件的 html 字符串的最佳实践

】在vue中呈现包含组件的html字符串的最佳实践【英文标题】:bestpractisetorenderhtmlstringsthatcontaincomponentsinvue【发布时间】:2019-05-2206:23:23【问题描述】:我有一个博客/新闻类网站,这意味着会有帖子,它们的内容是存储在我的数... 查看详情

当你的系统依赖于某个bug...

...要尽可能被修复的,这样系统才会正常工作。但是,开发实践中会发现在某些情况下,本来功能没有问题,在你信心满满的修复了某个bug之后,某项功能反倒变成有问题了。这是怎么回事呢?在bugfix本身没有问题的情况,最可能... 查看详情