DataWorks现在的pyodps脚本固化历史分区数据执行超过48小时执行不完,看日志,只跑了1/5的样子,找阿里运维截图提示如图所示,看描述是cpu资源沾满了么?我们数据量并不大,8000个分区,2.7亿条数据而已
pyodps大致操作如下
import datetime
from odps import ODPS
import pandas as pd
sql =
SELECT DISTINCT pt
FROM p.XXXXXXXta.st.XXXXXXXtatai order by pt desc
instance = odps.run_sql(sql)
instance.wait_for_success()
results = []
with instance.open_reader() as reader:
for record in reader:
results.append(record.values)
distinct_pt_df = pd.DataFrame(results, columns=['pt'])
total_partitions = len(distinct_pt_df)
for index, row in distinct_pt_df.iterrows():
partition_str = str(row['pt'])
print(f"当前执行序号:{index+1} / 总个数:{total_partitions}")
sql_insert = f
INSERT OVERWRITE TABLE sc_dr_ytai_sjzq.STG_SD_YT_SETL_FEE_STT_D PARTITION(pt='{partition_str}')
select XXXXXXXta
from scXXXXXXXtaqXXXXXXXtaai c
where XXXXXXXtaloc not in ('3', '4')
and a.psn_no = d.psn_no;
print (sql_insert )
insert_instance = odps.run_sql(sql_insert )
insert_instance.wait_for_success()!
看起来使用了pandas 会下载到本地执行 独享调度资源组有限制 下载不能超过50m,建议是用odps的df ,不过odps的df不支持遍历 可以咨询MaxCompute同学看下是否有其他解法
from odps.df import DataFrame ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”
您的DataWorks PyODPS脚本在处理历史分区数据时遇到了执行时间过长的问题,仅完成了约1/5的进度,且阿里云运维提供了截图提示,似乎指向CPU资源占用满的情况。考虑到您提到的数据规模(8000个分区,2.7亿条数据),虽然不算非常庞大,但在某些特定操作或资源限制下,依然可能导致长时间运行甚至阻塞。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
DataWorks基于MaxCompute/Hologres/EMR/CDP等大数据引擎,为数据仓库/数据湖/湖仓一体等解决方案提供统一的全链路大数据开发治理平台。