【问题标题】:Copy files from S3 to EMR local using Lambda使用 Lambda 将文件从 S3 复制到本地 EMR
【发布时间】:2019-06-26 04:20:02
【问题描述】:

我需要使用 Lambda 以编程方式将文件从 S3 移动到 EMR 的本地目录 /home/hadoop。

S3DistCp 复制到 HDFS。然后我登录 EMR 并在命令行上运行 CopyToLocal hdfs 命令以将文件保存到 /home/hadoop。

有没有一种编程方式在 Lambda 中使用 boto3 从 S3 复制到 Emr 的本地目录?

【问题讨论】:

    标签: amazon-s3 aws-lambda copy amazon-emr


    【解决方案1】:

    我编写了一个测试 Lambda 函数来向 EMR 提交一个作业步骤,该步骤将文件从 S3 复制到 EMR 的本地目录。这行得通。

    emrclient = boto3.client('emr', region_name='us-west-2')
    
    def lambda_handler(event, context): 
    EMRS = emrclient.list_clusters( ClusterStates = ['STARTING', 'RUNNING', 'WAITING'] ) 
    clusters = EMRS["Clusters"] 
    print(clusters)
    for cluster in clusters: 
        ID = cluster["Id"]
        response = emrclient.add_job_flow_steps(JobFlowId=ID,
                                     Steps=[
                                         {
                                             'Name': 'AWS S3 Copy',
                                             'ActionOnFailure': 'CONTINUE',
                                             'HadoopJarStep': {
                                                 'Jar': 'command-runner.jar',
                                                 'Args':["aws","s3","cp","s3://XXX/","/home/hadoop/copy/","--recursive"],
                                             }
                                         }
                                     ],
                                )
    

    如果有更好的复制方法,请告诉我。

    【讨论】:

      【解决方案2】:

      这需要一种方法让 AWS Lambda 函数远程触发集群上的CopyToLocal 命令。

      Lambda 函数可以调用 add-steps 请求集群运行执行此操作的脚本。

      【讨论】:

        猜你喜欢
        • 2017-01-16
        • 2020-10-30
        • 2011-11-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-05
        相关资源
        最近更新 更多