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

大数据计算MaxCompute除非进行队列插入可能会避免这个问题?

大数据计算MaxCompute全量表只有一张 但是临时表会有多张,数据源有多个,所以当所有数据源数据同时达到临时表,再往全量表导入数据的时候就会产生并发~除非进行队列插入可能会避免这个问题?那数据进入到mc表之后他所在的行号是不是就一直不变了呢?如果对其进行了字段更新的话 行号是不是就i变了呢?我们用的是事务表呢?

展开
收起
真的很搞笑 2023-10-29 19:52:17 48 0
3 条回答
写回答
取消 提交回答
  • MaxCompute(原名ODPS,开放大数据处理服务)是一个大规模数据处理平台,它主要用于处理和分析大量数据,而不是存储和管理数据。因此,MaxCompute并没有像数据库那样的事务和锁机制。

    在MaxCompute中,数据是以分片的形式存储的,每个分片都有自己的行号。当数据被写入到一个分片时,它会自动分配一个行号。然后,这个行号就会被持久化,即使数据被更新或删除,这个行号也不会改变。这是因为MaxCompute的设计目标是高吞吐量和低延迟,而不是强一致性。

    因此,如果你在一个事务中更新了某个字段,那么这个字段的值会被更新,但是行号不会改变。这是因为行号的分配是在数据写入分片时完成的,而不是在事务提交时完成的。

    虽然MaxCompute没有数据库的事务和锁机制,但是它的设计使得它在处理大量数据时能够保持高吞吐量和低延迟。

    2023-10-30 12:10:14
    赞同 展开评论 打赏
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在MaxCompute中,由于其分布式架构的特点,对于多张临时表的数据合并到一张全量表的过程的确可能存在并发问题。为了避免这种情况,您可以在程序设计时采取一些措施来降低并发冲突的可能性,比如:

    1. 在导入全量表前先锁定全量表,待所有临时表的数据合并完成后解锁全量表。
    2. 使用分布式锁(如Zookeeper)来进行资源协调,确保在同一时间只有一个任务在写入全量表。

    关于行号的问题,在MaxCompute中并不会有固定的行号概念。这是因为MaxCompute是一个分布式的、基于列存储的大数据处理平台,它并不保证数据按照某种特定顺序存储。因此,在进行数据更新时,无法依赖行号来定位特定行。

    如果您需要跟踪每条记录的历史版本,那么可以考虑使用拉链表(Snapshot Table)的设计方法。在这种方案中,每个记录都会有一个唯一的主键,并且每一次更新都会生成一个新的版本记录,旧版本的记录不会被删除而是标记为已过期。这样就可以通过主键快速地找到最新的记录版本以及历史版本。

    2023-10-30 09:39:43
    赞同 展开评论 打赏
  • 同时写没问题https://help.aliyun.com/zh/maxcompute/product-overview/acid-semantics?spm=a2c4g.11174283.0.0.6d01cd53Ht7n4k
    不动就不会变,普通表不支持update。那就需要设置权限了。不要让随便update,此回答整理自钉群“MaxCompute开发者社区2群”

    2023-10-30 08:04:04
    赞同 展开评论 打赏

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

相关产品

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

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