【问题标题】:What is the equivalent Glue Spark configuration to use SageMaker processing?使用 SageMaker 处理的等效 Glue Spark 配置是什么?
【发布时间】:2022-10-25 12:47:39
【问题描述】:

我正在尝试将 Glue 自定义 PySpark 作业迁移到 SageMaker 处理,以从 SageMaker Pipeline 提供的 MLOps 中受益。

  1. 在 Glue 中,我的工作使用 10 个 G.1X(4 个 CPU,16G 内存)实例并在 10 分钟内完成。
  2. 我尝试使用类似的 SageMaker 处理实例(10 ml.m5.xlarge 实例,4 个 CPU,每个 16G 内存),但由于 OOM 失败“OutOfMemoryError:请使用具有更多内存的实例类型,或确保您的处理容器使用的内存不超过可用内存。”当我检查 cloudwatch 实例指标时,所有 10 个实例的最大内存使用率仅为 37.4%,因此实际上并没有用完所有内存。

    Glue 不会在其仪表板上公开spark-submit 参数(例如 --conf spark.executor.memory),所以我如何检查我的 SageMaker 处理作业是否使用与 Glue 作业相同的配置,以及最佳实践是什么保持他们的火花配置是一样的?

【问题讨论】:

    标签: aws-glue amazon-sagemaker


    【解决方案1】:

    有一个特定组件允许您在 Amazon SageMaker 中执行 Data Processing with Apache Spark

    它被称为PySparkProcessor

    它像任何其他处理作业一样工作。当然,您也可以指定您的run args


    指定内存配置的示例:

    from sagemaker.spark.processing import PySparkProcessor
    
    spark_processor = PySparkProcessor(
        base_job_name="spark-preprocessor",
        framework_version="2.4",
        role=role,
        instance_count=2,
        instance_type="ml.m5.xlarge",
        max_runtime_in_seconds=1200,
    )
    
    configuration=[
        {
            "Classification": "spark-defaults",
            "Properties": {
                "spark.driver.memory": "4g"
           },
       }
    ]
    
    spark_processor.run(
        submit_app="preprocess.py",
        arguments=['s3_input_bucket', bucket,
                   's3_input_key_prefix', input_prefix,
                   's3_output_bucket', bucket,
                   's3_output_key_prefix', output_prefix],
        configuration = configuration
    )
    

    【讨论】:

    • 谢谢,我确实使用了 PySparkProcessor。与我的胶水工作相比,它没有保持类似的性能。我正在寻找 Glue 为“属性”提供的确切内容。
    • 在其_SparkProcessorBase 类中,PySparkProcessor 使用了所有配置。它还存在一个名为_extend_processing_args() 的私有方法,可用于观看
    • 我知道我可以将配置设置为 PysparkProcessor,但我正在寻找将配置从 AWS Glue 复制到 PysparkProcessor。您是否偶然知道 AWS Glue 如何配置 Spark 作业?
    • 在 Glue 上创建作业时,可以看到自动生成的 Spark 代码。你可以从那里开始逐行调查。您可以找到examples of ETL 代码和step-by-step explanation of an AWS example。我会尝试遵循其中一个示例中的 Glue 生成的代码,并在您的 PySparkProcessor 中重现它,这样您就可以验证您是否获得了相同的性能。
    猜你喜欢
    • 2020-02-19
    • 2019-12-30
    • 1970-01-01
    • 2015-09-13
    • 2022-08-12
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 2021-01-07
    相关资源
    最近更新 更多