(这个问题与Store multiple elements in json files in AWS Athena非常相似)
我在 S3 存储桶中有一个 JSON 文件,其结构如下 -
[{"key1": value, "key2": value, "key3": {"key4": value, etc}}, {"key1": value....}]
Run Code Online (Sandbox Code Playgroud)
两个问题:
为什么如果我直接将其发送到 Quicksight,Quicksight 知道如何完美地规范化文件(除非存储桶中存在多个不匹配的文件(这就是我尝试 Athena 的原因)),但 Athena 却对此苦苦挣扎?我知道它与格式有关(每个字典都不在自己的行上,它是字典列表而不仅仅是字典等),但如果 AWS 上有其他服务,则似乎没有必要修改原始文件知道如何毫无问题地解析和展平它。
我在 Lambda 中使用 Python 脚本来调用 API,字典列表就是它的格式。是否有一种简单的方法可以按照 Athena 喜欢的方式格式化 JSON 文件?以下是我当前脚本的示例 -
response = requests.request(method, url, **kwargs)
data_dict = response.json()
data_json = json.dumps(data_dict['results'])
s3.Bucket('bucket_name').put_object(Key = key, Body = data_json)
Run Code Online (Sandbox Code Playgroud)
免责声明:我对 AWS/编码总体来说相当陌生,并且在尝试理解 AWS 文档时遇到了许多挑战,因此如果这是一个简单的修复,我深表歉意。
amazon-s3 amazon-web-services amazon-quicksight amazon-athena aws-glue