首页 文章

AWS Athena将result.json输出到s3 - CREATE TABLE AS / INSERT INTO SELECT?

提问于
浏览
0

无论如何可以将AWS Athena查询的结果写入s3存储桶中的results.json吗?

我的第一个想法是使用 INSERT INTO SELECT ID, COUNT(*) ...INSERT OVERWRITE ,但根据Amazon Athena DDL Statementstdhoppers Blogpost似乎不支持

  • 无论如何可以使用AWS Athena的新数据 CREATE TABLE 吗?

  • AWS胶水有没有解决方法?

  • 无论如何可以用Athena的结果触发lambda函数? (我知道S3 Hooks)

覆盖整个json文件/表并始终创建一个新的json对我来说无关紧要,因为我聚合的统计数据非常有限 .

我知道AWS Athena会自动将结果作为CSV写入S3存储桶 . 但是我喜欢简单的聚合并将输出直接写入公共s3,以便浏览器中的spa角度应用程序能够读取它 . 因此JSON格式和特定路径对我来说很重要 .

1 回答

  • 2

    我用胶水为我工作 . 使用Athena jdbc驱动程序运行查询并在数据框中加载结果 . 然后将数据帧保存为指定S3位置上的所需格式 .

    df=spark.read.format('jdbc').options(url='jdbc:awsathena://AwsRegion=region;UID=your-access-key;PWD=your-secret-access-key;Schema=database name;S3OutputLocation=s3 location where jdbc drivers stores athena query results',
          driver='com.simba.athena.jdbc42.Driver',
          dbtable='(your athena query)').load()
    df.repartition(1).write.format("json").save("s3 location")
    

    以dbtable ='(select * from foo)'格式指定查询

    here下载jar并将其存储在S3中 . 在胶水上配置etl job时,在Jar lib路径中指定jar的s3位置 .

相关问题