本文汇总了实时计算上下游存储常见报错与解决方案。

如何避免结果表写入不同步问题?

  • 问题描述

    把相同的数据保存到属于不同数据库但表结构相同的两个结果表里,两张表数据的写入速率不同,但最终的结果一致。

  • 问题原因

    由于结果表的并发量不同,数据分发出现数据乱序。

  • 解决方案

存放的数据产品不在实时计算支持的存储列表,应该如何处理?

  • 如果您所选择的阿里云存储产品不在实时计算系统支持范围之内,请您提交工单进行咨询。
  • 如果您使用了自建开源存储,需要将您的数据迁移到实时计算支持的列表存储中。数据迁移的过程中如果遇到问题,您可以提交工单进行咨询。

DataHub作为结果表存在大量重复数据,应该如何处理?

  • 问题描述

    从DataHub的Topic A中读取数据,通过实时计算处理后写入到DataHub中的Topic B,发现有大量重复数据。

  • 原因分析

    上述问题是由DataHub存储机制导致的。DataHub是一种消息队列服务,写入一条数据,就存储一条数据,不会对数据的重复性进行判断,而会将每一条输入的数据当成新数据进行储存。在此场景中,运算过程中的计算数据同样被DataHub储存,导致产生重复数据。

  • 解决方案

    请您将结果表换成RDS。RDS会根据主键更新结果,不会储存计算过程数据。

DataHub中Shard在只读状态下可以被读取数据吗?

  • 问题描述
    DataHub中Shard在只读状态下可以被读取数据吗?shard
  • 问题解析

    Shard在可读写状态下是可以被读取数据的。上图中Shard状态为CLOSED,而CLOSED是只读状态,并非可读写状态,因此无法被读取。关于Shard状态说明,详情请参见基本概念

实时计算每处理一条记录都会去新增或者更新RDS数据库表吗?将实时计算结果写入数据库,是否会对RDS产生性能影响?

实时计算的每条结果数据会触发对RDS的写入。如果存在KEY,重复的值会更新(UPDATE),不重复的值会新增(INSERT)。您可以通过设置Batchsize参数来降低对RDS性能的影响。

实时计算上游数据源是否支持RDS数据库?

不支持,实时计算支持以下两类上游数据源来驱动计算:
  • 消息队列类型。例如,消息队列Kafka、消息队列RocketMQ版和DataHub等。
  • 非消息队列类型。例如,大数据计算服务(MaxCompute,原名ODPS)和表格存储Tablestore等。

如何使用Java连接实时计算与消息队列?

您可以使用Flink Datastream的方式实现实时计算读取消息队列RocketMQ版中的数据。详情请参见概述