spark写入hive表问题

1、httpclient 发送post请求,当返回的数据过大时,报错 socket closed
这个原因是客户端主动将连接关闭,
根本原因是将 httpclient。execute的返回结果 closeableResponse 作为a方法的返回结果,在b方法中进行解析
虽然在b方法中没有 关闭closeableResponse,但是在a方法中返回closeableResponse后,会进行httppost.realeaseconnection,释放连接
解决办法:解析逻辑也放到同一方法中

2、spark代码运行报错类找不到,没有打包相关依赖
将依赖打包到jar中的方式:
1) 使用maven assembly插件 报错 was cached in local
2) 使用maven shade插件 ,添加includes配置,只添加需要的依赖,spark等依赖不需要打包

3、spark读取配置文件,需要使用–files 选项,将配置文件一同上传到集群,否则会报错文件未找到
将配置文件路径作为main方法的参数,直接追加在spark提交语句的最后即可,前面不需要加任务–选项

4、提交到集群task卡在running状态不退出,是task有异常已经退出,但是异常没有被抛出,导致状态无法更新
使用clien模式运行在本地,可以直接查看所有日志
使用本地模式运行后报错 container exited with a non-zero exit code 13
进一步报错信息为stage24 contains a task of very large size;the maximum recommended task size is 100kb
因为在driver端有mock数据的代码,未指定driver内存,导致内存不足

5、报错文件已存在,删除后还是报错 FileAlreadyExistsException: Output directory Output already exists
进一步返现 任务日志中会有两次提交
原因在于应用已经出现异常,但是还是会以0状态码返回 System.exit(0),导致在以yarn-cluster模式提交时。cluster模式不支持shell,所以当执行到System.exit(0),程序开始报错,然后集群会按照yarn设定好的AM重启次数(在CDH的yarn配置板块中搜索application即可看到次数设置),重新运行,而且如果程序没有错的话,结果就没有错,这样就很难发现错误了。
解决方法,排查程序中的错误

6、读取配置文件报错空指针
confutils工具类,在driver中被初始化持有一个config实例,但是在map操作中还会用到这个工具类,此时config的工具类就是空,需要在map中再次调用初始化方法

7、本地运行spark,读取远程的hive表
需要加载hive配置文件,可以将远程的hive-site.xml hdfs-site.xml core-site.xml 配置文件复制到本地一份,
然后使用hadoop的Configuration 类,新建一个配置对象 configuration,
使用addResource方法,把上述三个配置文件加载进来,这里注意不要用参数为字符串的构造方法,需要传入Path或者URL对象
完成上述步骤后,新建sparkConf, 遍历 configuration,将配置项逐个添加到 sparkconf中
sparksession.config() 方法,放入sparkconf

8、rdd写入hive表
使用spark read table方法,获取表的schema,返回StrutType对象
使用spark,createDataframe方法,入参为rdd,StrutType

怎么将普通类型的rdd转成 rdd?
RowFactory.create(Object[]),传入object数组,所以可以将rdd中的数据,不管是字符串,还是json,先转换成Object数组,
然后在调用 RowFactory.create(Object[])
注意 1)bigDemical对象不能直接转成Obejct,需要先tostring ,
2)只能放入Obeject数组,不能放入LIst类型的对象

10、Please make sure that jars for your version of hive and hadoop are included in the paths passed to
本地运行时,将hive-site.xml中的引擎配置为tez 的配置项注释掉

11、illegal partten component XXX
jar包冲突,去掉 hive-exec的依赖

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值