AWS Athena查询镶木地板数据以返回JSON输出

时间:2018-11-16 16:24:02

标签: c# amazon-athena aws-glue

我有以下设置。

  1. 应用程序将序列化的JSON数据发送到Firehose。
  2. Firehose使用粘合表定义配置为将数据转换为praquet,以高效执行查询。
  3. 我能够在Athena中运行查询并查看结果。

现在我需要创建另一个应用程序,该应用程序可以使用AWSSDK(C#)查询Athena并以JSON格式读取数据。 Glue table

是否可以使用表的输入/输出格式,并通过Athena SDK使用SERDE读取JSON格式的数据?还是我需要实现自定义逻辑以将数据转换回JSON?

3 个答案:

答案 0 :(得分:1)

雅典娜基于Presto 0.172版本,因此您可以在Presto文档中找到答案。例如,本章对您有用:

https://prestodb.io/docs/current/functions/json.html

答案 1 :(得分:1)

问题很旧,但可能会帮助尝试将Athena表中的结果导出为不同输出格式的人。通过简单的Athena CTAS(https://docs.aws.amazon.com/athena/latest/ug/create-table-as.html)语句,可以使用AWS CTAS将数据导出为不同的格式(ORC,PARQUET,AVRO,JSON或TEXTFILE)。您还可以指定压缩格式以保存输出数据。

以下示例将在s3上将数据导出为JSON格式。
output_location ='s3://s3_bucket/output.json'

CREATE TABLE output
 WITH (
 format = 'JSON',
 external_location = output_location) AS SELECT * FROM target_table     

这种方法的缺点:输出始终被压缩。

答案 2 :(得分:-1)

所以我从雅典娜那里得到了这样的东西:

SELECT output FROM "test"."prod" limit 10;

{score=41, avg_time_solving={double=17439.333333333332, long=null}

如果我在此字段上使用强制类型转换,则会得到:

SELECT CAST(output AS JSON) FROM "test"."prod" limit 10;

[51, [8205.57142857143,null], [null,5159], 7, [0.8571428571428571,null], null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]

相关问题