因为我这里是用的是商业版的DB2 软件,网上有的多是开源的东西。导致我在spark里连接db2是有问题的,在这里把解决的办法分享给大家。
1,在C:\Users\nti\.m2\repository目录下建立目录\db2jcc\db2jcc\9.0,在该目录下新建文件db2jcc-9.0.pom,内容如下:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>db2jcc</groupId>
<artifactId>db2jcc</artifactId>
<version>9.0</version>
<packaging>jar</packaging>
</project>
然后将db2jcc.jar复制到C:\Users\nti\.m2\repository\db2jcc\db2jcc\9.0下,并改名为db2jcc-9.0.jar。
2,在C:\Users\nti\.m2\repository目录下建立目录\db2jcc_license_cu\db2jcc_license_cu\9.0,在该目录下新建文件db2jcc_license_cu-9.0.pom,内容如下:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>db2</groupId>
<artifactId>db2jcc_license_cu</artifactId>
<version>9.0</version>
<packaging>jar</packaging>
</project>
然后将C:\Program Files\IBM\SQLLIB\java目录下db2jcc_license_cu.jar复制到C:\Users\nti\.m2\repository\db2jcc_license_cu\db2jcc_license_cu\9.0下,并改名为db2jcc_license_cu-9.0.jar。
3,在pom.xml中增加依赖:
<dependency>
<groupId>db2jcc</groupId>
<artifactId>db2jcc</artifactId>
<version>9.0</version>
</dependency>
<dependency>
<groupId>db2jcc_license_cu</groupId>
<artifactId>db2jcc_license_cu</artifactId>
<version>9.0</version>
</dependency>
最后编译即可!
4. 实例代码如下:
package com.spark.S_SOURCE_CJSJK
import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SQLContext
import org.apache.spark.{SparkConf, SparkContext}
object AJCJ01 {
def main(args: Array[String]): Unit = {
Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
Logger.getLogger("org.eclipse.jetty.server").setLevel(Level.WARN)
System.setProperty("hadoop.home.dir", "F:/hadoop-2.7.1")
val conf = new SparkConf().setMaster("local[2]").setAppName("AJCJ01")
val sc = new SparkContext(conf)
val sqlcontext = new SQLContext(sc)
val db2DF = sqlcontext.read.format("jdbc").options(Map(
"url" -> "jdbc:db2://10.11.22.33:50000/AUDIT",
"driver" -> "com.ibm.db2.jcc.DB2Driver",
"dbtable" -> "AUDIT.AJCJ01",
"user" -> "audit",
"password" -> "12345")).load()
db2DF.show()
}
}
5.结果如下: