![](/img/trans.png)
[英]Amazon athena can't read S3 JSON Object files and Athena select query returns empty result sets for JSON key columns
[英]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博客的支持。
CREATE TABLE
嗎? 對我來說,覆蓋整個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.