请教各位大佬,我用 spark 算的一张几十万级别的表,结果保存到 hive. 结果任务卡在 save task 几个小时,该如何优化呢?实例代码如下
df.write.format("orc"). saveAsTable("db. table")
df 是一个几十万条数据的 dataframe
df.write.format("orc"). saveAsTable("db. table")
df 是一个几十万条数据的 dataframe
1
wloverine Dec 9, 2021
几十万不应该卡住呀,看下 spark ui 上耗时在哪里,是不是计算执行耗时
|
2
apostle OP df 的结构如下
Id string Itemids arrary< string> 分区字段是 partition=id%100 来填充 |
5
cs419 Dec 9, 2021
几十万条数据?
IDE 里 单机就能跑吧 有必要拆成 100 个么 可以考虑 折半查找 是不是某些数据导致的卡死 好久之前 写过 spark 当时 提交任务 老是跑挂掉 后来发现是 maven 中的 spark 版本 与 部署的版本不一致 |
6
zhusimaji Dec 9, 2021 via iPhone
几十万数据很少了,partitions 也不要设那么多吧,具体原因看下日志吧,web 页面应该有提示
|
7
bigwhite2021 Dec 9, 2021
几十万的数据很小了,Itemids arrary< string> 里面数据很大吗?没必要分 100 个分区吧,只要保存的文件小于 128MB 应该一个分区就行了吧,具体原因可以看下 UI 里的日志和 task 的执行时间。
|
8
pengtdyd Dec 10, 2021
跑一下 spark 的测试程序,看看是不是环境问题
|
10
diggzhang Dec 10, 2021
partition=id%100
---------------------------------- 分区设置不合理导致。可能在加载分区目录阶段已经频繁 GC ,最终 OOM 。 |