小白求助大数据大佬 spark 问题

2021-12-09 21:43:32 +08:00
 apostle
请教各位大佬,我用 spark 算的一张几十万级别的表,结果保存到 hive. 结果任务卡在 save task 几个小时,该如何优化呢?实例代码如下

df.write.format("orc"). saveAsTable("db. table")

df 是一个几十万条数据的 dataframe
1507 次点击
所在节点    程序员
10 条回复
wloverine
2021-12-09 21:49:24 +08:00
几十万不应该卡住呀,看下 spark ui 上耗时在哪里,是不是计算执行耗时
apostle
2021-12-09 21:50:11 +08:00
df 的结构如下
Id string
Itemids arrary< string>
分区字段是 partition=id%100 来填充
apostle
2021-12-09 21:54:12 +08:00
@wloverine 我在 ui 上确认过了显示 save 卡了一个多两个小时还没跑完 不过我也不确定 明天给大佬上图
apostle
2021-12-09 21:56:31 +08:00
@wloverine 之前也没跑过这么大数据量 正常应该是多久呀
cs419
2021-12-09 22:03:23 +08:00
几十万条数据?
IDE 里 单机就能跑吧 有必要拆成 100 个么

可以考虑 折半查找
是不是某些数据导致的卡死

好久之前 写过 spark
当时 提交任务 老是跑挂掉
后来发现是 maven 中的 spark 版本 与 部署的版本不一致
zhusimaji
2021-12-09 22:25:31 +08:00
几十万数据很少了,partitions 也不要设那么多吧,具体原因看下日志吧,web 页面应该有提示
bigwhite2021
2021-12-09 23:59:15 +08:00
几十万的数据很小了,Itemids arrary< string> 里面数据很大吗?没必要分 100 个分区吧,只要保存的文件小于 128MB 应该一个分区就行了吧,具体原因可以看下 UI 里的日志和 task 的执行时间。
pengtdyd
2021-12-10 00:24:18 +08:00
跑一下 spark 的测试程序,看看是不是环境问题
wloverine
2021-12-10 08:06:37 +08:00
@apostle 几十万应该是很快的,喝杯水的功夫就跑完了
diggzhang
2021-12-10 08:30:36 +08:00
partition=id%100
----------------------------------
分区设置不合理导致。可能在加载分区目录阶段已经频繁 GC ,最终 OOM 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/821200

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX