Kafka-SparkStreaming-ElasticSearch踩坑记(一)

1.前言

笔者刚参加到新的工作中,进入了新的公司,从事的是大数据分析方向的岗位,用的是Java语言,由于公司之前一直采用的是Storm框架,并且采用的是高级的Trident框架,但是依据公司业务调整,需要转向Spark进行开发,也正因此我可以说是第一个吃螃蟹的人,每天死磕Spark和Elasticsearch,所以在代码编写过程中,出现了很多BUG,很多新的API,今天的第一记录主要是记录几个jar包冲突和简单API但是容易报BUG的地方。

2、问题点

首先,我们需要引入的是Spark-core的jar包,这个包是Spark离线分析的核心包,在公司中,要求使用的是Spark-core_2.11-2.3.3版本,也不算太老的版本了,但是也不是最新的版本,所以有很多需要注意的jar包冲突问题。
pom.xml文件如下:


	org.apache.spark
	spark-ore_2.11
	2.3.3

目前出现的两个jar包冲突是:
、com.fasterxml.jackson.databind.JsonMappingException: Incompatible Jackson version: 2.9.6
这里的Incompatible就说明是jar包版本冲突了,首先我们可以到Maven Dependecncies中可以看到引入的的确是jackson-core-2.9.6,***这是因为公司的parent内置的版本是2.9.6, ***然后在pom文件中,我们按Ctrl加鼠标左键,点击spark-core可以发现,其内置的Jackson包是2.6.7的,那么这样导致冲突了
解决办法是:先在

org.apache.spark
spark-ore_2.11
2.3.3

中将jackson去除掉,再另外新增,因为自己新增的会覆盖继承来的父类的版本的。
Kafka-SparkStreaming-ElasticSearch踩坑记(一)_第1张图片
然后新增自己的jar包引入:
Kafka-SparkStreaming-ElasticSearch踩坑记(一)_第2张图片
当然如果只写GAV(groupId,artifactId,version),会看到version下面有黄色的线条,这表明是要继承父类的版本,但是我们想自定义版本,那么就要在后面加上 N O − M V N − M A N − V E R NO-MVN-MAN-VER NOMVNMANVER>,然后就可以了。

**②、**第二个版本冲突是
com.google.common.base.Stopwatch.()V from class org.apache.hadoop.mapred.FileInputFormat
这会发生在我们利用textFile读取文件时抛出的异常,这个意思也是出现了jar包冲突,我们按照上面的方法,点击parent可以看到父类引入的jar包版本是21.0,而spark-core的内置版本是14.0,因此需要需要先移除,再手动新增GAV。

后续,会持续更新这个系列,毕竟也是从新做起要完成的项目,想必会踩很多坑,但是将这些坑记录下来,可以让后来的人快速解决问题。

你可能感兴趣的:(问题解决类)