数据驱动hive-jdbc 数据精度问题

出现问题:mybatis作为dao框架,利用hive-jdbc驱动,连接hive数据源,查询结果集的decimal类型数据 失去小数点后的值,导致数据精度问题。

如下是hive驱动的相关包和数据源配置

<!-- hive连接驱动开始 -->
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-client</artifactId>
			<version>2.6.0</version>
		</dependency>
		<dependency>
			<groupId>org.apache.hive</groupId>
			<artifactId>hive-jdbc</artifactId>
			<version>2.0.0</version>
			<exclusions>
				<exclusion>
					<groupId>org.eclipse.jetty.aggregate</groupId>
					<artifactId>jetty-all</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.hive</groupId>
					<artifactId>hive-shims</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
<!--         hive连接驱动结束 -->

 hive数据源配置

##hive 
datasource.url=jdbc:hive2://10.10.8.107:21050/;auth=noSasl
datasource.username=
datasource.password=
datasource.driverClassName=org.apache.hive.jdbc.HiveDriver
datasource.type=hive

原因:hive-jdbc包中 org.apache.hive.jdbc.JdbcColumn 类的 columnClassName方法对 hiveType的decimal类型匹配为了javaType的BigInteger类型,因此导致了经过mybatis后类型转换后导致数据小数点后缺失,产生数据精度问题。

解决方案如下:

方案一:在当前项目中新建一个同包名类目的JdbcColumn.java,修改下图位置,将BigInteger换位BigDecimal,项目编译后,

将新生成的JdbcColumn.class 的替换hive-jdbc.jar中的 JdbcColumn.class即可。附件中保存了该文件。

方案二:改为 impala 连接驱动

    1. 修改pom配置

 <!-- impala 配置开始 -->      
       <dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>2.6.0</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.hive</groupId>
			<artifactId>ImpalaJDBC41</artifactId>
			<version>1.0.0</version>
		</dependency>
		<dependency>
			<groupId>pri.impala</groupId>
			<artifactId>inceptor-driver</artifactId>
			<version>1.0.0</version>
			<exclusions>
				<exclusion>
					<groupId>org.slf4j</groupId>
					<artifactId>slf4j-log4j12</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.thrift</groupId>
			<artifactId>libfb303</artifactId>
			<version>0.9.3</version>
			<type>pom</type>
		</dependency>
<!-- impala 配置开始 -->

    2.修改数据源配置

##hive 
#datasource.url=jdbc:hive2://10.10.8.107:21050/;auth=noSasl
datasource.url=jdbc:impala://10.10.8.102:21050/;auth=noSasl
datasource.username=
datasource.password=
#datasource.driverClassName=org.apache.hive.jdbc.HiveDriver
datasource.driverClassName=com.cloudera.impala.jdbc41.Driver
datasource.type=hive

 

Hive-JDBC Uber Jar 是一个包含了所有依赖项的单一 JAR 文件,使得使用 Hive JDBC 连接数据库更加方便。为了下载 hive-jdbc-uber-jar,您可以按照以下步骤进行操作: 1. 打开您的网络浏览器并访问 Apache Hive 的官方网站(https://hive.apache.org/)。 2. 在页面的顶部菜单栏中,您会找到一个"Downloads"(下载)的选项。单击这个选项。 3. 在下载页面上,您可以看到不同的 Hive 版本和相关的下载链接。根据您的需求选择适合的版本。一般建议选择最新版本。 4. 找到并单击下载链接,以启动 hive-jdbc-uber-jar 文件的下载。可以选择一个合适的下载镜像,点击相关链接即可开始下载。 5. 下载完成后,您可以在您指定的下载文件夹中找到 hive-jdbc-uber-jar 文件。可以通过文件管理器打开文件夹并查看文件。 在您下载了 hive-jdbc-uber-jar 文件后,您可以将其添加到您的项目中,并使用 HiveJDBC API 连接到 Hive 数据库。您可以在项目的构建路径中添加该 JAR 文件,并在代码中引入相关的类和方法。确保在代码中正确配置 JDBC 连接参数,如 Hive 服务器的 URL、用户名和密码等。 总结起来,您可以通过在 Apache Hive 官方网站下载页面上选择适当的 Hive 版本并点击相关的下载链接,从中直接下载 hive-jdbc-uber-jar 文件。这个 JAR 文件是使用 Hive JDBC 连接到 Hive 数据库时所需的所有依赖项的集合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值