繁体   English   中英

AWS Athena将result.json输出到s3-创建表AS /插入选择吗?

[英]AWS Athena output result.json to s3 - CREATE TABLE AS / INSERT INTO SELECT?

是否有可能将AWS Athena查询的结果写入s3存储桶中的results.json?

我的第一个想法是使用INSERT INTO SELECT ID, COUNT(*) ...INSERT OVERWRITE但这似乎不受Amazon Athena DDL语句tdhoppers博客的支持。

  1. 使用AWS Athena可以用新数据CREATE TABLE吗?
  2. AWS Glue可以解决吗?
  3. 用雅典娜的结果触发lambda函数有什么可能? (我知道S3挂钩)

对我来说,覆盖整个json文件/表并始终创建一个新的json并不重要,因为我汇总的统计信息非常有限。

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

用胶水为我工作。 使用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 ='(从foo中选择*)'

此处下载jar并将其存储在S3中。 在胶水上配置etl作业时,请在Jar lib路径中为jar指定s3位置。

您可以通过使用“选择时创建表”(CTAS)查询让Athena在s3中创建数据。 在该查询中,您可以指定希望创建的表在何处以什么格式存储其数据。 https://docs.aws.amazon.com/athena/latest/ug/ctas-examples.html对于json,您要查找的示例是:

CREATE TABLE ctas_json_unpartitioned 
WITH (
     format = 'JSON',  
     external_location = 's3://my_athena_results/ctas_json_unpartitioned/') 
AS SELECT key1, name1, address1, comment1
FROM table1;

这将导致单行json格式

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM