我有一个S3 json数据集,它是KMS客户端加密的DynamoDB的转储(即每个记录都是KMS客户端独立加密的)。
我想使用Spark来加载该数据集以执行某些分析,这意味着我必须调用KMS来解密每条记录。拥有一个简单地解密每一行的udf可以工作但是达到KMS API限制100次/秒
我想知道是否有某种速度限制这些Spark地图操作?
答案 0 :(得分:1)
我认为这可以由Spark streaming
应用程序处理。
检查spark.streaming.backpressure.enabled
和spark.streaming.receiver.maxRate
启用或禁用Spark Streaming的内部反压机制(自1.5起)。这使Spark Streaming能够根据当前的批处理调度延迟和处理时间来控制接收速率,以便系统只接收系统可以处理的速度。在内部,这动态地设置接收器的最大接收速率。如果设置值
spark.streaming.receiver.maxRate
和spark.streaming.kafka.maxRatePerPartition
,则此上限受上限限制(见下文)。
如果要设置最大streaming
100 calls/sec
每个接收器将接收数据的最大速率(每秒记录数)。实际上,每个流每秒最多将消耗此数量的记录。将此配置设置为0或负数将对速率没有限制。有关模式详细信息,请参阅Spark Streaming编程指南中的部署指南