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

昨天把大数据计算MaxCompute一个大SQL拆分成了几段去跑,最后插入到结果表的存储量缺变大了。

昨天把大数据计算MaxCompute一个大SQL拆分成了几段去跑,最后插入到结果表的存储量缺变大了。这是为什么啊?6631563f54172de845bad57caf55afcc.png

展开
收起
cuicuicuic 2023-07-18 22:25:14 67 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    将一个大 SQL 拆分成多个小 SQL 来执行,在理论上不应该会导致结果表的存储量变大。然而,实际上可能存在以下情况导致结果表的存储量变大:

    数据重复写入。如果多个小 SQL 的结果集存在重叠部分,可能会导致重复写入数据到结果表中,从而增加结果表的存储量。

    中间表数据过多。如果拆分 SQL 后需要使用临时表或者中间表进行计算,且中间表数据量过大,可能会导致结果表的存储量变大。

    数据类型转换问题。如果多个小 SQL 中涉及到数据类型转换操作,可能会导致结果表的存储量变大。例如,将字符串类型转换为数值类型时,可能会导致数据精度损失,从而导致结果表的存储量变大。

    如果您发现结果表的存储量变大,可以先检查 SQL 语句是否存在数据重复写入的问题,尝试去除重叠部分。如果仍然存在存储量变大的问题,可以检查 SQL 语句中是否存在中间表数据过多或者数据类型转换问题,并进行相应的优化和调整。此外,还可以通过调整结果表的表结构和分区方式等方式,来减少结果表的存储量

    2023-07-29 11:02:52
    赞同 展开评论 打赏
  • 当您将一个大SQL拆分成多个段来执行时,结果表的存储量可能会增加的原因可能有以下几个:

    1. 数据冗余:如果在每个段中都生成了相同的结果数据,并将它们插入到结果表中,那么结果表中的数据会出现冗余。这会导致存储量的增加,因为相同的数据被重复存储。

    2. 中间结果保存:在拆分的过程中,每个段可能会生成一些中间结果数据。如果这些中间结果数据也被写入到结果表中,那么结果表的存储量会增加,包括原始数据和中间结果数据。

    3. 分区操作:如果您在拆分的过程中进行了分区操作,并根据不同的条件将数据插入到不同的分区中,那么结果表的存储量可能会增加。因为每个分区都需要单独存储数据。

    4. 数据合并:在拆分结束后,如果您需要将拆分的结果进行合并或聚合,并将最终结果插入到结果表中,那么存储量可能会增加。因为最终结果可能比每个段的结果更大。

    要解决这个问题,您可以考虑以下方法:

    • 避免数据冗余:确保在拆分的过程中不会产生重复的数据,并仅将最终结果插入到结果表中。
    • 最小化中间结果保存:优化拆分过程,尽量减少中间结果的生成和存储。
    • 合理使用分区:如果使用了分区,请确保分区策略合理,并仅将必要的数据插入到结果表的相应分区。
    • 聚合结果数据:在拆分结束后,可以尝试将拆分的结果进行合并或聚合,以减少最终结果的存储量。

    此外,还建议根据具体情况进行优化和调整。考虑查询的复杂性、数据规模、分布和存储需求,以及MaxCompute的性能和资源限制等因素。

    请注意,MaxCompute的具体配置和限制可能会根据服务提供商和服务层级而有所不同。建议查阅MaxCompute官方文档或与您的服务提供商进行进一步的沟通和咨询。

    如果您需要更具体的帮助,请提供更多关于SQL和拆分过程的详细信息,我将能给出更准确的解答。

    2023-07-28 21:09:26
    赞同 展开评论 打赏
  • 因为数据地图里有一些临时文件之类的,所以显示的存储量会比MaxCompute控制台稍微大一些;

    存储使用量有这么几个地方可以看

    1. MaxCompute控制台:控制台的项目列表里可以看到项目的已用存储;
    2. 数据地图:数据地图里有project下的总量和单表存储之类的,因为数据地图里有一些临时文件之类的,所以显示的存储量会比MaxCompute控制台稍微大一些;
    3. 用量明细:可以导出MaxCompute的用量明细,通过公式计算一下。详情参考:https://help.aliyun.com/document_detail/106521.html?spm=a2c4g.608123.0.i10#p-ozp-jnl-mqf
    4. 如果需要单表存储量,以desc tablename;的结果为准,单位byte。如果需要核查MaxCompute的存储费用,以用量明细为准就行。,此回答整理自钉群“MaxCompute开发者社区2群”
    2023-07-19 13:01:26
    赞同 展开评论 打赏

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

相关产品

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

    更多
    大数据AI一体化的解读 立即下载
    极氪大数据 Serverless 应用实践 立即下载
    大数据&AI实战派 第2期 立即下载