Scala 总结项目一---Spark连接不上Hive以及scala代码中bigInt类型报错问题

本文探讨了使用Scala连接Hive过程中遇到的问题及解决方案,包括连接失败与字段类型不匹配等问题,并分享了通过转换思路直接操作HDFS文件或利用Spark底层特性来解决问题的经验。

二、Scala连接Hive出现问题

难点:

​ 原项目是没有用到Hive的连接使用,所以要自己找连接的方法,我查看网上的连接方法,都是将Hive的配置文件 hive-site.xml 放在resoures下,然后配置连接conf,但是这套代码怎么着也连不上。

解决方案:

​ 和杨大哥沟通后,一直没有解决这个问题的方法,后来他说了一番话:你连接Hive也是为了操作表,你直接读取HDFS的文件路径可以转成DataFream然后进行SparkSql操作的啊。所以就转换了思路,不再去纠结如何连接Hive,选择直接将文件在程序中转成对应临时表去操作数据。
​ 或者是在集群直接连hive表操作,这两个方案都有一个问题,那就是无法在本地做调试,只能在集群上调试,出差错改完代码再放在集群上测试。

总结:

​ 有时候一个问题遇到瓶颈的话,可以转换自己的思维方式,在这些方面网上倒是有scala的这些相关操作,直接创建conf去根据字段建临时表,但是需要注意的是字段类型要对上。

三、连接Hive临时表字段类型对不上

难点:

​ 在IDEA本地是可以测试的通的,但是放在集群上部署的话,他会报错,错误信息有2种,一个就是,操作的临时表有脏数据,可能这个数据没有进行null值判断;还有一个错误就是Java.long.int/double 不适合Spark的bigInt类型,这个问题的难点就是:在本地可以测试出数据,但是在集群部署上跑不出来数据,就报这个错,网上的资源也很有限。庆龙大哥也没什么办法,只能让我去换思路解决。

解决方案:

​ 还是回到上面2的难点上,但是庆龙大哥说,你在代码中不需要去连接Hive,直接建好相应的表去操作表数据就行了,因为Spark底层配置好了连接Hive数据库的一些方法,所以我就去建了相应的Hive表和导入相应的数据,果然可以直接操作Hive,问题得以解决。

总结:

​ 还是有时候需要去转换新思路,碰到难走的坑就不要一直被陷下去,看看有没有别的路可以绕过这个坑。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值