如何对 Spark 地图操作进行速率限制?

2024-02-15

我有一个 S3 json 数据集,它是 KMS 客户端加密的 DynamoDB 的转储(即每条记录都是 KMS 客户端独立加密的)。

我想使用 Spark 加载该数据集来执行一些分析,这意味着我必须调用 KMS 来解密每条记录。拥有一个简单地解密每一行的 udf 是可行的,但会达到每秒 100 次调用的 KMS API 限制

我想知道是否有某种方法可以限制这些 Spark 映射操作的速率?


我认为这可以通过以下方式处理Spark streaming应用。

check spark.streaming.backpressure.enabled and spark.streaming.receiver.maxRate

启用或禁用 Spark Streaming 的内部反压机制(自 1.5 起)。这使得Spark Streaming能够根据当前批量调度延迟和处理时间来控制接收速率,使得系统接收的速度与系统处理的速度一样快。在内部,这动态设置接收器的最大接收速率。该速率的上限由值决定spark.streaming.receiver.maxRate and spark.streaming.kafka.maxRatePerPartition如果它们已设置(见下文)。

当你想设置最大值时streaming 100 calls/sec

每个接收器接收数据的最大速率(每秒记录数)。实际上,每个流每秒最多消耗这个数量的记录。将此配置设置为 0 或负数将对速率没有限制。有关模式详细信息,请参阅 Spark Streaming 编程指南中的部署指南

部署应用程序 http://spark.apache.org/docs/latest/streaming-programming-guide.html#deploying-applications

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何对 Spark 地图操作进行速率限制? 的相关文章

随机推荐