spark上的一些问题

3 篇文章 0 订阅
3 篇文章 0 订阅

【持续更新…】
之前不记录碰到的问题,解决的思路,导致之后再次碰到又在查查查…
spark常见问题汇总

————————————————————————————————————

!!!!!!进不去主类

表象:运行某个.scala文件的时候,一直进不去类
原因:最终找到的原因是,packages名没有写对!!!!!!少写了一个字母

————————————————————————————————————

spark-shell进不去或者进去非常慢

表象:spark-shell太卡了,在进去之后报java内存不够的问题
原因: 开了太多spark-shell,又异常关闭
解决:命令行运行

pgrep java
pkill java

————————————————————————————————————

插入到hive表乱码

附带一个彻底解决mysql中文乱码,起因是读取的sql表乱码了。

表象:插入到hive表中文乱码,但是中间临时表中的编码正常,中间没有别的操作,只有将临时表中的插入到目标hive表中
原因:过程中有很多编码的问题,尽量将编码全部设置一致。

中间尝试过的办法:
尝试1: alter table BUCKETING_COLS default character set utf8;
结果1: 失败

尝试2:alter table xxx set SERDEPROPERTIES(“serialization.encoding”=’UTF-8′);
结果2:失败

尝试3:创建表时候添加编码:ROW FORMAT SERDE ‘org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe’ WITH SERDEPROPERTIES(“serialization.encoding”=’UTF-8′);
结果3: 失败

尝试4: default charset utf8
结果4: 建表失败

解决:再spark-submit的时候增加如下参数 参考1 参考2

--conf spark.driver.extraJavaOptions=" -Dfile.encoding=utf-8 " \
--conf spark.executor.extraJavaOptions=" -Dfile.encoding=utf-8 " \

————————————————————————————————————

org.apache.spark.SparkException: Kryo serialization failed: Buffer overflow

参考:https://blog.csdn.net/xinganshenguang/article/details/54586110
解决:spark-submit时候增加参数:

--conf spark.kryoserializer.buffer.max=256m  
--conf spark.kryoserializer.buffer=64

————————————————————————————————————

OOM:GC overhead limit exceeded

问题:出现java.lang.OutOfMemoryError: GC overhead limit exceeded
原因:

在Java中, 创建一个新对象时, 例如 Integer num = new Integer(5); , 并不需要手动分配内存。因为 JVM 自动封装并处理了内存分配. 在程序执行过程中, JVM 会在必要时检查内存中还有哪些对象仍在使用, 而不再使用的那些对象则会被丢弃, 并将其占用的内存回收和重用。这个过程称为 垃圾收集. JVM中负责垃圾回收的模块叫做 垃圾收集器(GC)。
Java的自动内存管理依赖 GC, GC会一遍又一遍地扫描内存区域, 将不使用的对象删除. 简单来说, Java中的内存泄漏, 就是那些逻辑上不再使用的对象, 却没有被 垃圾收集程序 给干掉. 从而导致垃圾对象继续占用堆内存中, 逐渐堆积, 最后造成 java.lang.OutOfMemoryError: Java heap space 错误

方案:

PS: 造成这个问题的根本原因并非如此,而是数据量大造成的的 .collect()部分的问题,需要再程序中修改这个部分
———————————————————————————————————

待查询的问题:
flatmap() 的使用,输入是rdd(arraybuffer(string,string,string))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值