elasticsearch与spark,hbase等jar包冲突导致报错问题

阅读更多
在原有的spark程序中,其中包含hhase,spark等,会出现jar包冲突导致有异常的问题,程序中都是使用maven。
在异常中,包含nosuchmethod的异常错误信息,可以看出是guava版本与hadoop版本不一致导致,Hadoop中使用的是12版本,而es2.3.1默认使用18版本。这样才程序执行的时候使用的是12版本,会导致类中的方法找不到的异常。
解决办法是,es的依赖不使用maven,把es以及依赖搞成一个单独的jar,给程序调用。首先,创建一个单独的maven项目,xml配置文件如下:

	4.0.0

	

	my.elasticsearch
	es-shaded
	1.0-SNAPSHOT



	Es001
	http://maven.apache.org


	
		2.3.1
		UTF-8
	
	
		
			org.elasticsearch
			elasticsearch
			${elasticsearch.version}
		
		
			org.elasticsearch.plugin
			shield
			${elasticsearch.version}
		
	
	
		
			
				org.apache.maven.plugins
				maven-shade-plugin
				2.4.1
				
					false
				
				
					
						package
						
							shade
						
						
							
								
									com.google.guava
									my.elasticsearch.guava
								
								
									org.joda
									my.elasticsearch.joda
								
								
									com.google.common
									my.elasticsearch.common
								
								
									com.google.thirdparty
									my.elasticsearch.thirdparty
								
								
								
									com.fasterxml.jackson
									my.elasticsearch.jackson
								
								
								
							
							
								
							
						
					
				
			
		
	

	
		
			elasticsearch-releases
			http://maven.elasticsearch.org/releases
			
				true
				daily
			
			
				false
			
		
	




  然后使用eclipse或者命令对项目进行build,执行完后会在对于的本地maven配置的repository中找到该jar,最后在spark程序提交的时候,不需要再项目jar中导入改jar包,而是提交的时候手工执行本地jar就ok,也就是spark-submit执行时,后面--jars 后面加入本地之前弄好的es的jar即可,问题解决。

你可能感兴趣的:(hadoop,maven)