开发者社区 > 大数据与机器学习 > 大数据计算 MaxCompute > 正文

大数据计算MaxCompute 【打平时间 -- 笛卡尔积】 相关的性能问题,有什么好的解法吗?

大数据计算MaxCompute 【打平时间 -- 笛卡尔积】 相关的性能问题:

我有一张源头表,记录了【从去年开始、每个客户、某事物、在某时刻、的值】的 history_change 变化。我现在需要把这张表打平到 天 + 小时 + 客户 + 某事物 + 值。我的做法是,构建出时间序列time_series as (select explode(sequence(unix_timestamp(开始时间,unix_timestamp(NOW())),3600)) AS hour_timestamp) ,就是一个小时一条记录,3600秒一个步伐。

然后我去填充, FROM time_series t JOIN history_change n ON FROM_UNIXTIME(t.hour_timestamp,'yyyy-MM-dd HH:00:00') >= n.change_time_hour
然后再去根据 该事物+小时 做分组,按照时间倒序去排序,得到某时刻最新的一个数据。

OK,大体思路是这样,下面是问题:
JOIN ON a>=b ,会出现笛卡尔乘积,当数据量比较小,不会有问题。但是数据量稍微大一点,比如a是小时表,有8700条, b 是事物历史变更表,有158万。这个时候笛卡尔积就会有137亿产生,就会跑不动了。

我现在碰到的情况就是这样,请问有什么好的解法吗?

日志 Logviw: https://logview.aliyun.com/logview/?h=http://service.ap-southeast-1.maxcompute.aliyun-inc.com/api&p=dev_mc_tarmar_bigdata&i=2024072603142244gwp5t7zjlbi&token=VlNpTjlZMStnZTY4d0w1dXJCbU5ZdW02MytRPSxPRFBTX09CTzpwNF8yMTkwNzY0MTYxODcyMTQ3OTQsMTcyNDU1NTY2Myx7IlN0YXRlbWVudCI6W3siQWN0aW9uIjpbIm9kcHM6UmVhZCJdLCJFZmZlY3QiOiJBbGxvdyIsIlJlc291cmNlIjpbImFjczpvZHBzOio6cHJvamVjdHMvZGV2X21jX3Rhcm1hcl9iaWdkYXRhL2luc3RhbmNlcy8yMDI0MDcyNjAzMTQyMjQ0Z3dwNXQ3empsYmkiXX1dLCJWZXJzaW9uIjoiMSJ9。

展开
收起
嘟嘟嘟嘟嘟嘟 2024-07-31 22:29:41 45 0
1 条回答
写回答
取消 提交回答

MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。

相关产品

  • 云原生大数据计算服务 MaxCompute
  • 相关电子书

    更多
    Data+AI时代大数据平台应该如何建设 立即下载
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载