数仓开发遇到的那些事(2)

某不愿透露姓名的神州实习生:一闪,怎么每次我在你文章里都是反面形象,能不能给我安排个正面的人设(不然我点踩)

我:好的好的,肯定安排.........(你这个X毛,上次笔试让你帮我做个算法题,支支吾吾半天做不出来)

Hive On Spark的JVM重用

我:来来来,大佬喝茶

老程序员:怎么想到给我买奶茶?(有什么问题快点问)

我:(昨天被你装到了,今天我要扳回来)我就是想问问咱们Hive处理小文件的时候都有啥方法?

老程序员:(瞟)这个问题你进公司的时候没问你吗,CombineTextInputFormat,JVM重用呗

我:那我Hive on Spark也可以开启JVM重用吗

老程序员:(惊!要坏.这我可不知道啊)你去试试,不能啥问题都让我给你解决啊.(快点走,我赶快百度一下)

我:我觉得是因为Spark中Executor本身是一个对象,它有一个属性的类型是ThreadPool,咱们的MR任务本身是一个进程,但是Executor底下的Task是一个个线程,相当于本身就开启了JVM重用.

老程序员:(诶呀,栽了)不错,跟我的想法差不多

Sqoop导出问题

我:咱们ads层的表导出到mysql之后咋这么多重复的?

老程序员:(偷看)

我:噢噢噢噢,原来是mysql里建表忘记设置主键字段了

老程序员:那你知道为什么设置好主键字段就不会重复吗

我:不是因为主键的唯一性吗

老程序员:准确的说应该是sqoop在导出的时候使用的是”有则更新,无则插入”的语法,而这种语法就是根据唯一键来判断要写入的数据是否已经存在了,所以加上主键字段之后,重复写就会变成更新写.

我:(怎么感觉好像在哪里看见过这个说法..是不是CSDN上陈哈哈的博客上看到的)原来是这样,我最近在研究DataX,毕竟Sqoop已经宣布不会再更新了

老程序员:哟,学习上还挺积极,那你sqoop已经钻研的差不多了?

我:一般一般.世界第三

老程序员:Sqoop的底层是啥

我:默认4个Map

老程序员:那我要是有的Map成功有的Map失败.怎么保证数据的一致性?

我:刚刚不是说了吗,有则更新,无则插入,那我重新跑一遍不就完了吗

老程序员:那要是第一次导出失败,那个不完整数据被领导看见了,你重新跑了一遍之后,领导一看数据不一样了,那你咋办

我:(那我就gg了)我直接用一个map跑,要么成功要么失败

老程序员:...(谁把你招进来的)

我:确实是可以实现的嘛,但是我可能会用那个叫--stage-table的方式,让数据先写到临时表,如果失败,老板也看不到数据,成功的话就会一起写进去了

老程序员:(可恶,竟然没装到)

ps:昨天晚上去买玉米吃,走路玩手机把手机摔了,所以走路别玩手机.

 

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐一闪_BigData

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值