当前位置: 首页 > 知识库问答 >
问题:

设计分区键以确保特定类型的数据在Kinesis中进入相同的分片

长孙哲
2023-03-14

我是AWS Kinesis数据流的新手。在我的用例中,我想设置一个带有2个分片的Kinesis数据流,其中一个分片我想放与学生相关的数据,而在另一个分片中,我想放与教师相关的数据。

在这里,我的问题是如何设计分区键以确保与学生和教师相关的数据不会出现在Kinesis数据流中的同一个分片中?

共有1个答案

徐卓
2023-03-14

每个碎片都将获得固定范围的分区密钥。您可以使用描述流来获取此范围。

例如,对于第一个分片:

                "HashKeyRange": {
                    "StartingHashKey": "0",
                    "EndingHashKey": "113427455640312821154458202477256070484"
                },

因此,在开始流式处理之前,可以通过编程方式检查范围并从相应的范围中选择关键帧。

有了这个,您可以在PutRecords显式指定它们应该去哪个分片时使用ExplwitHashKey。

 类似资料:
  • 在生产者-消费者web应用程序中,为kinesis流碎片创建分区键的思路应该是什么。假设,我有一个带有16个碎片的kinesis流,我应该创建多少个分区键?真的取决于碎片的数量吗?

  • 我从S3读取PARQUET文件时出错,原因是“final_height”列在同一个分区中有String和Double类型。供参考,拼花文件中有20多列。我得到的错误是: 当"part1.gz.parquet"有X列的字符串数据,而"part2.gz.parquet"在同一列中有双精度数据时,找到了一些解决方案。但是当在同一分区中发现同一列中的不同类型时,它们不起作用。 试: 使用合并模式和推断模式

  • 我正在使用AWS kinesis和lambda开发一个实时数据管道,我试图弄清楚如何确保来自相同数据生产者的记录由相同的碎片处理,并最终由相同的lambda函数实例处理。 我的方法是使用分区键来确保来自相同生产者的记录由相同的碎片处理。但是,我不能让同一碎片中的记录由同一lambda函数实例处理。 基本设置如下: null 分区键用于在流中按碎片对数据进行分组。Kinesis Data Strea

  • 使用,我们可以获得分区的计数。但是我们怎么得到分区呢? 我还试图从文档和所有属性(使用)中获取一些信息。但是,我找不到任何提供分区的API,只能找到、、。 我读了这篇文章并推断Spark不知道分区键。我的疑问是,如果它不知道分区键,因此也不知道分区,它怎么能知道它们的计数呢?如果可以,如何确定分区?

  • 如何将数据写入Kinesis中的特定分片? 博托医生说 分区键是Unicode字符串,每个键的最大长度限制为256个字符。MD5哈希函数用于将分区键映射到128位整数值,并使用碎片的哈希键范围将相关数据记录映射到碎片。您可以通过使用ExplicitHashKey参数显式指定哈希值来覆盖哈希分区键以确定碎片。 然而,我实际上如何做到这一点?

  • 我想覆盖特定的分区,而不是spark中的所有分区。我正在尝试以下命令: 其中df是具有要覆盖的增量数据的数据帧。 hdfs基本路径包含主数据。 当我尝试上述命令时,它会删除所有分区,并将df中存在的分区插入hdfs路径。 我的要求是只覆盖df中指定hdfs路径上的那些分区。有人能帮我一下吗?