Spark-submit问题、Hive表load空值问题、jar Classnotfount和自定义UDF的使用以及常见的问题

一、Hive

hive是数据仓库,建立在hdfs生态圈的上层架构,hive的数据可以与mysql hbase 进行转换

1.使用mysql导入数据到hive load 表发现值为null的问题

(1)先检查sqoop 导入时候有没有指定分隔符 

 --fields-terminated-by '#'这一句是不是添加了。默认是逗号是分隔符

切记指定分隔符只能为单字符,推荐\t 和hive默认的\001 前提是数据里面不可能包含此字符

(2)如果hive中的表与sqoop导入指定的分隔符一致 仍发现一大堆null值 这时候 就要注意了。

很有可能是导入的数据中有此分隔符 导致数据错位直接报null

(3)以上如果还没有发现问题,请先sqoop上去一点数据进行测试 上50070 下载这个blk

打开nodepad++查看导出的数据是不是你要的格式 不要用那些乱七八糟的符号 比如⭐。

这一步缺认后数据没有问题,那么只能是你所导入的数据中包含你所用的分隔符 这个可能了。。。

比较笨的解决办法 :1先不用包含的分隔符进行操作2自定义UDF 对其进行操作split不需要的字符或者字节

import org.apache.hadoop.hive.ql.exec.UDF;

public class  evaluat(String str){

val s1="";

if(str !=null && str!=“”)

   if( str.split("字符").lenth>1){

    for(int a=0 ;a<str.split("字符").lenth;a++){

    s1+=str.split("字符").get(a)}

    return s1;

}}这里大概的逻辑是这样就不做优化了根据自己的业务来

return str;

hive-shell

add jar 你的jar包目录 (本地)

create temporary function <函数名> '你的那个UDF类的路径' 举例com.hive.udf

使用的话就在select 语句中 函数名(值)就可以了

一切的报错请仔细检查错误信息 和字段对应的问题 大多都是不细心字段对不上而产生的错误

不要把存数据的mysql 和hive的mysql用同一台机器

 二、spark jar包 classnotfound

常见问题 1.我用eclipse打jar包 就可以正常运行,到idea 里面写打jar包怎么就不行(如果非要用idea打包还运行不了麻烦删除jar 文件里的所有DSA 和SF文件 )这些是记录类的加载信息的  ,最好还是用maven打

2.jar包的存放地址 请放在本地 丢到集群也可以 但记得路径要写对 复制粘贴代码的时候记得吧packect 换成正确的,有一次我就忘了删  然后copyname 怎么都不对。后来发现 这个packect 会影响到classname的

3.请核对scala版本和java的版本 对不上号 的会有冲突 。

4.比较常见也是最愚蠢的问题。。class  包 路径名字打错了。。请检查一遍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值