【问题标题】:Pre filter solution for aws Glue / Redshift (before the loading into S3)aws Glue / Redshift 的预过滤解决方案(在加载到 S3 之前)
【发布时间】:2019-03-22 09:02:08
【问题描述】:

我正在编写从 Redshift 表(或视图)到 Redshift 表的 aws Glue 计划转换脚本。

我的一些表很大,我不想将整个表加载到 S3 文件中,或者对于其中的一些,我想要一个增量解决方案。 因此,我正在寻找适用于 aws Glue / Redshift 的预过滤器解决方案(在加载到 S3 之前)。

我知道,如果您直接在 S3 存储桶上工作,则可以使用谓词下推来避免加载您不关心的数据。 Redshift 表似乎不支持它。

您知道 Redshift 的类似解决方案吗?还是解决方法?

谢谢

【问题讨论】:

    标签: amazon-redshift aws-glue


    【解决方案1】:

    我是使用 AWS Glue 的新手,我现在找到的解决方案是这个 glueContext.read:

    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: [TempDir, JOB_NAME]
    args = getResolvedOptions(sys.argv, ['TempDir', 'JOB_NAME'])
    
    sc = SparkContext()
    glueContext = GlueContext(sc)
    spark = glueContext.spark_session
    job = Job(glueContext)
    job.init(args['JOB_NAME'], args)
    
    qry_for_df = """
        (SELECT *
           FROM table1
          WHERE field1 = ‘something’ ) as subq
    """
    
    df = glueContext.read.format("jdbc").option("driver", "com.amazon.redshift.jdbc.Driver").option("url", "jdbc:redshift://…”).option("dbtable", qry_for_df).option("user", "username”).option("password", “XXXXXXXX”).load()
    

    一些注意事项: 我还没有找到使用 AWS Glue 的预定义 JDBC 连接的方法,所以我在作业中添加了 Jar 库路径 s3://your-bucket/path/RedshiftJDBC42XXX.jar。

    我没有包含存储密码和 url 的方法,但这里是亚马逊最佳实践的链接(作为建议): https://aws.amazon.com/blogs/big-data/use-aws-glue-to-run-etl-jobs-against-non-native-jdbc-data-sources/

    您可以从元数据中获取参数,但缺少数据库名称,连接名称应该是硬编码或通过作业参数 cnx_parameters = glueContext.extract_jdbc_conf("Your_Cnx_Name", catalog_id=None)

    【讨论】:

    • 您好,感谢您的帮助。值得一试,老实说,我没有找到其他解决方案
    • 如果你能分享结果会很好。成功了吗?
    • 我没有成功,所以我决定采用另一个解决方案:我创建了一个视图。它有点难看,但不费吹灰之力就可以很好地工作:-/
    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 2018-01-30
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多