如何限制Spark地图操作?

时间:2017-05-13 13:46:22

标签: apache-spark

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

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

我想知道是否有某种速度限制这些Spark地图操作?

1 个答案:

答案 0 :(得分:1)

我认为这可以由Spark streaming应用程序处理。

检查spark.streaming.backpressure.enabledspark.streaming.receiver.maxRate

  

启用或禁用Spark Streaming的内部反压机制(自1.5起)。这使Spark Streaming能够根据当前的批处理调度延迟和处理时间来控制接收速率,以便系统只接收系统可以处理的速度。在内部,这动态地设置接收器的最大接收速率。如果设置值spark.streaming.receiver.maxRatespark.streaming.kafka.maxRatePerPartition,则此上限受上限限制(见下文)。

如果要设置最大streaming 100 calls/sec

  

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

deploying-applications