二、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,问题得以解决。
总结:
还是有时候需要去转换新思路,碰到难走的坑就不要一直被陷下去,看看有没有别的路可以绕过这个坑。