簡體   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