代码之家  ›  专栏  ›  技术社区  ›  Jiew Meng

aws glue:etl读取s3 csv文件

  •  0
  • Jiew Meng  · 技术社区  · 6 年前

    我想用ETL从S3读取数据。因为有了ETL作业,我可以设置DPU,希望能加快速度。

    但我该怎么做呢?我试过了

    import sys
    from awsglue.transforms import *
    from awsglue.utils import getResolvedOptions
    from pyspark.context import SparkContext
    from awsglue.context import GlueContext
    from awsglue.job import Job
    
    ## @params: [JOB_NAME]
    args = getResolvedOptions(sys.argv, ['JOB_NAME'])
    
    sc = SparkContext()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    job.init(args['JOB_NAME'], args)
    
    inputGDF = glueContext.create_dynamic_frame_from_options(connection_type = "s3", connection_options = {"paths": ["s3://pinfare-glue/testing-csv"]}, format = "csv")
    outputGDF = glueContext.write_dynamic_frame.from_options(frame = inputGDF, connection_type = "s3", connection_options = {"path": "s3://pinfare-glue/testing-output"}, format = "parquet")
    

    但似乎没有写什么。我的文件夹如下:

    enter image description here

    什么不正确?我的输出S3只有一个类似以下的文件: testing_output_$folder$

    1 回复  |  直到 6 年前
        1
  •  -3
  •   Tanveer Uddin    6 年前

    如果您正在读或写S3 bucket,则bucket名称应具有AWS glue* 用于访问桶的粘附前缀。假设您正在使用预配置的 _156;awsglueservicerole__iam role,仔细研究政策细节将回答为什么 粘合作业就是这样。以下是默认的__awsglueservicerole_策略JSON。我 我只保留S3相关的部分,以保持简短的演示目的。尽你所能 请参见,s3 get/list bucket方法可以访问所有资源,但是当涉及到 获取/放置*对象,仅限于AWS胶水- / _157;前缀

    我写了一篇 blog 关于可能有帮助的几个自动焊接系统。

    如果有任何错误消息,并且我建议的解决方案不起作用,您还可以粘贴日志吗?