跳转至

配置执行参数

执行参数控制如何编排转换和增强作业。

参数

在您切换开启 启用数据处理 后,您可以配置以下的 执行参数

参数 描述
数据处理间隔/固定频率 通过固定频率指定批处理数据进行 ETL 处理的间隔 1 小时
12 小时
1 天
数据处理间隔/Cron 表达式 通过 cron 表达式指定批处理数据进行 ETL 处理的间隔 cron(0 * * ? *)
cron(0 0,12 * ? *)
cron(0 0 * ? *)
事件新鲜度 指定解决方案将忽略事件数据的天数。例如,如果您为此参数指定了3天,那么解决方案将忽略任何在事件触发后超过3天到达的事件 3 天
5 天
30 天

Cron 表达式语法

语法

cron(分钟 小时 月中的天 月 周中的天 年)

有关更多信息,请参阅 基于 Cron 的计划

配置Spark作业参数

默认情况下,Clickstream 会智能地根据需要处理的数据集的大小并适当设置EMR作业参数。在大多数情况下,您不需要调整 EMR 作业参数,但如果您想覆盖 EMR 作业参数,您可以将 spark-config.json 文件放入S3存储桶以设置您自己的参数。

要添加自定义的 EMR 作业参数,您可以在 S3 存储桶中添加一个文件 s3://{PipelineS3Bucket}/{PipelineS3Prefix}{ProjectId}/config/spark-config.json,请使用数据流水线中的值替换 {PipelineS3Bucket}{PipelineS3Prefix}, 和 {ProjectId} 。 这些值可以在Clickstream-DataProcessing-<uuid> 堆栈的 参数界面中找到。

此外,您可以通过运行以下命令获取这些值:

stackNames=$(aws cloudformation list-stacks --stack-status-filter CREATE_COMPLETE UPDATE_COMPLETE --no-paginate  | jq -r '.StackSummaries[].StackName' | grep  Clickstream-DataProcessing  | grep -v Nested)

echo -e "$stackNames" | while read stackName; do
    aws cloudformation describe-stacks --stack-name $stackName  | jq '.Stacks[].Parameters' | jq 'map(select(.ParameterKey == "PipelineS3Bucket" or .ParameterKey == "PipelineS3Prefix" or .ParameterKey == "ProjectId"))'
done

下面是一个设置 spark-config.json 的例子:

{
   "sparkConfig": [
        "spark.emr-serverless.executor.disk=200g",
        "spark.executor.instances=16",
        "spark.dynamicAllocation.initialExecutors=16",
        "spark.executor.memory=100g",
        "spark.executor.cores=16",
        "spark.network.timeout=10000000",
        "spark.executor.heartbeatInterval=10000000",
        "spark.shuffle.registration.timeout=120000",
        "spark.shuffle.registration.maxAttempts=5",
        "spark.shuffle.file.buffer=2m",
        "spark.shuffle.unsafe.file.output.buffer=1m"
    ],
    "inputRePartitions": 2000
}

请确保您有足够的 emr-serverless 配额,在 us-east-1 区域,您可以通过emr-serverless-quotas查看配额。 更多信息请参阅 Spark作业参数和应用工作节点设置