Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在Glue作业中访问AWS Glue工作流的run属性?_Amazon Web Services_Aws Cli_Aws Glue_Aws Glue Data Catalog - Fatal编程技术网

Amazon web services 如何在Glue作业中访问AWS Glue工作流的run属性?

Amazon web services 如何在Glue作业中访问AWS Glue工作流的run属性?,amazon-web-services,aws-cli,aws-glue,aws-glue-data-catalog,Amazon Web Services,Aws Cli,Aws Glue,Aws Glue Data Catalog,我一直在使用AWS Glue工作流来编排批处理作业。 我们需要通过才能限制批处理作业的处理。 单独运行Glue作业时,可以在运行时将下推谓词作为命令行参数传递(即aws Glue start job run--作业名称foo.scala--参数--arg1 text${arg1}..)。但当我们使用glue工作流来执行glue作业时,就有点不清楚了 当我们使用AWS Glue工作流编排批处理作业时,我们可以在创建工作流时添加运行属性 我可以使用运行属性为我的粘合作业传递下推谓词吗 如果是,那么如

我一直在使用AWS Glue工作流来编排批处理作业。 我们需要通过才能限制批处理作业的处理。 单独运行Glue作业时,可以在运行时将下推谓词作为命令行参数传递(即aws Glue start job run--作业名称foo.scala--参数--arg1 text${arg1}..)。但当我们使用glue工作流来执行glue作业时,就有点不清楚了

当我们使用AWS Glue工作流编排批处理作业时,我们可以在创建工作流时添加运行属性

  • 我可以使用运行属性为我的粘合作业传递下推谓词吗
  • 如果是,那么如何在运行时为run属性(下推谓词)定义值。我想在运行时为下推谓词定义值的原因是,谓词每天都会任意更改。(即,在过去10天、过去20天、过去2天等时间内运行胶水工作流)
  • 我试过:

    aws glue start工作流运行--名称工作流名称| jq-r'.RunId'

    aws glue put工作流运行属性--名称工作流名称--运行id“id” --运行属性--pushdownpredicate=“某些值”

    我可以使用put工作流运行属性查看我通过的运行属性

    aws glue put工作流运行属性--名称工作流名称--运行id“id”

    但我无法在我的胶水作业中检测到“pushdownpertificate”。 知道如何在Glue Job中访问工作流的run属性吗


    如果使用python作为粘合作业的编程语言,则可以发出API调用来检索属性并在粘合作业中使用它

    response = client.get_workflow_run_properties(
        Name='string',
        RunId='string'
    )
    
    这将为您提供以下响应,您可以解析并使用它:

    {
        'RunProperties': {
            'string': 'string'
        }
    }
    

    如果您使用的是scala,则可以使用等效的AWS SDK。

    首先,您需要确保作业是从工作流运行的:

    def get_worfklow_参数(args:Dict[str,str])->Dict[str,str]:
    """
    get_worfklow_参数被委托检索工作流参数
    """
    glue_client=boto3.client(“glue”)
    如果参数中的“工作流名称”和参数中的“工作流运行ID”:
    工作流\u args=glue\u客户端。获取\u工作流\u运行\u属性(Name=args['workflow\u Name'],RunId=args['workflow\u run\u ID'])[“RunProperties”]
    打印(“找到以下工作流参数:\n{}”。格式(工作流参数))
    返回工作流参数
    打印(“无法找到此工作流的运行属性!”)
    一无所获
    
    此方法将返回
    工作流
    输入参数的映射

    然后,可以使用以下方法检索给定参数:

    def get_worfklow_参数(args:Dict[str,str],arg)->str:
    """
    get_worfklow_参数被委托验证作业中是否存在给定参数并将其返回。如果不存在,则不会返回任何参数
    """
    如果args为None:
    一无所获
    如果args-in-args-else-None中的arg,则返回args[arg]
    
    从重用代码来看,我认为最好创建一个python(
    whl
    )模块,并在作业的脚本路径中设置该模块。通过这种方式,您可以通过简单的导入检索该方法

    没有
    whl
    模块,您可以按以下方式移动:

    
    def MyTransform(glueContext,dfc)->DynamicFrameCollection:
    进口boto3
    导入系统
    从键入导入Dict
    def get_worfklow_参数(args:Dict[str,str])->Dict[str,str]:
    """
    get_worfklow_参数被委托检索工作流参数
    """
    glue_client=boto3.client(“glue”)
    如果参数中的“工作流名称”和参数中的“工作流运行ID”:
    工作流\u args=glue\u client.get\u工作流\u run\u属性(
    Name=args['WORKFLOW\u Name'],RunId=args['WORKFLOW\u RUN\u ID'])[“RunProperties”]
    打印(“找到以下工作流参数:\n{}”。格式(工作流参数))
    返回工作流参数
    打印(“无法找到此工作流的运行属性!”)
    一无所获
    def get_worfklow_参数(args:Dict[str,str],arg)->str:
    """
    get_worfklow_参数被委托验证作业中是否存在给定参数并将其返回。如果不存在,则不会返回任何参数
    """
    如果args为None:
    一无所获
    如果args-in-args-else-None中的arg,则返回args[arg]
    _args=getResolvedOptions(sys.argv,['JOB\u NAME','WORKFLOW\u NAME','WORKFLOW\u RUN\u ID']
    worfklow_参数=获取worfklow_参数(_参数)
    作业运行id=获取工作流程参数(_参数,“工作流运行id”)
    my_参数=get_worfklow_参数(_参数,“工作流_自定义_参数”)
    
    谢谢!使用工作流运行属性并在粘合作业中调用它是有意义的。aws文档资源链接提供了很好的解释:。然而,我并没有在python中实现它,所以仍在研究Java/Scala SDK资源。(即getworkflowRunProperties())