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

DataWorks离线同步,数据源是tablestore,主键区间的配置是这样,帮忙看看?

DataWorks离线同步,数据源是tablestore,主键区间的配置是这样,但是没有按期望的只同步 1626230917753 到 1655371956798的这部分数据,把所有数据都同步过来了?"range": {
"split": null,
"end": [
{
"type": "INT",
"value": "157918"
},
{
"type": "INF_MAX"
},
{
"type": "INT",
"value": "1655371956798"
}
],
"begin": [
{
"type": "INT",
"value": "157918"
},
{
"type": "INF_MIN"
},
{
"type": "INT",
"value": "1626230917753"
}
]
}

展开
收起
真的很搞笑 2024-02-06 08:01:55 43 0
3 条回答
写回答
取消 提交回答
  • 使用DataWorks进行TableStore表的离线同步,并且想通过主键区间来控制只同步一部分数据。TableStore(表格存储)的主键是由多个主键列组成的有序组合,主键区间配置应该是基于每个主键列的值来进行划分。

    在你提供的JSON配置片段中,主键区间定义的似乎是三个主键列,分别对应三个value值,但实际上并未清晰地说明这三个值分别对应哪个主键列。此外,INF_MININF_MAX 分别代表最小值和最大值,通常用于表示某一列的范围边界。

    为了准确地按预期范围同步数据,你需要确保主键区间的配置符合TableStore主键列的顺序和类型,并且区间定义合理。假设你的主键列顺序和类型如下:

    1. INT 类型的分区键
    2. SORT_KEY_1 类型的排序键(这里用 INF_MIN 和 INF_MAX 表示全范围)
    3. TIMESTAMP 类型的排序键,你想限制在 1626230917753 到 1655371956798 的范围内

    正确的配置应该类似下面这样:

    "range": {
      "split": null,
      "end": [
        {"type": "INT", "value": "分区键的最大值"},
        {"type": "INF_MAX"},
        {"type": "TIMESTAMP", "value": "1655371956798"}
      ],
      "begin": [
        {"type": "INT", "value": "分区键的最小值"},
        {"type": "INF_MIN"},
        {"type": "TIMESTAMP", "value": "1626230917753"}
      ]
    }
    

    请务必替换为实际的分区键的最小值和最大值。同时,请再次检查你的主键列顺序和类型是否与配置相符,确保范围定义正确。

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

    根据您提供的配置信息,您的主键区间配置如下:

    "range": {
      "split": null,
      "end": [
        {
          "type": "INT",
          "value": "157918"
        },
        {
          "type": "INF_MAX"
        },
        {
          "type": "INT",
          "value": "1655371956798"
        }
      ],
      "begin": [
        {
          "type": "INT",
          "value": "157918"
        },
        {
          "type": "INF_MIN"
        },
        {
          "type": "INT",
          "value": "1626230917753"
        }
      ]
    }
    

    根据您的配置,您希望同步的数据范围是从 16262309177531655371956798。然而,您的配置中存在一些问题,导致无法正确指定数据范围。

    问题出在 endbegin 部分的第三个元素上。根据您的配置,end 部分的第三个元素的类型是 INT,而 begin 部分的第三个元素的类型是 INF_MIN。这导致了无法正确指定数据范围。

    要解决这个问题,您需要将 end 部分的第三个元素的类型改为 INF_MAX,并将 begin 部分的第三个元素的类型改为 INT。修改后的配置如下:

    "range": {
      "split": null,
      "end": [
        {
          "type": "INT",
          "value": "157918"
        },
        {
          "type": "INF_MAX"
        },
        {
          "type": "INT",
          "value": "1655371956798"
        }
      ],
      "begin": [
        {
          "type": "INT",
          "value": "157918"
        },
        {
          "type": "INF_MIN"
        },
        {
          "type": "INT",
          "value": "1626230917753"
        }
      ]
    }
    

    这样修改后,您的配置应该能够正确指定数据范围,并只同步 16262309177531655371956798 这部分数据。

    2024-02-06 15:13:05
    赞同 展开评论 打赏
  • 参考文档里的参数描述 修改看下呢ots reader多个主键如何指定部分数据抽取建全局二级索引https://help.aliyun.com/zh/tablestore/developer-reference/global-secondary-index-3?spm=a2c4g.11186623.0.i12
    image.png

    https://help.aliyun.com/zh/dataworks/user-guide/tablestore-data-source?spm=a2c4g.11186623.0.i1#task-2314772
    image.png
    ,此回答整理自钉群“DataWorks交流群(答疑@机器人)”

    2024-02-06 09:07:14
    赞同 展开评论 打赏

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

相关电子书

更多
TableStore在社交类场景下的应用 立即下载
表格存储实时数据流Steam的技术揭秘和应用场景 立即下载
表格存储(TableStore) 立即下载