boto3 - 通过 Firehose 将 map 数据放入 Athena

标签 boto3 amazon-athena amazon-kinesis-firehose

我在 Athena 中有一个带有 Map 类型的列。我已将 Glue 中的架构定义为 Map 。

我已经定义了一个引用胶水模式的消防水流,并将其转换为 Parquet 格式。但是,我在发送数据时收到以下错误
The schema is invalid. Error parsing the schema: Error: type expected at the position 0 of 'MAP <STRING, INT>' but 'MAP ' is found.
我正在使用 boto3 firehose 客户端提交数据。

这是我尝试过的

records=[{'Data': '{"id": "aac4da11-d166-42bd-83db-c670f5b5676d", "createdutc": "2019-06-27 10:25:33","tokens": {"black": 1, "spot": 1, "joint": 1, "leg": 1, "due": 1, "itchinghow": 1, "reduce": 1}'}]

firehoseClient.put_record_batch(
    DeliveryStreamName='conversations-analysis',
    Records=records)

最佳答案

显然,我能够解决它,用小写字母提及您架构中的所有内容,您应该能够保存 map 数据。例如, map 而不是 MAP

关于boto3 - 通过 Firehose 将 map 数据放入 Athena,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56950945/

相关文章:

json - 如何使用 Boto3 从 Amazon S3 读取大型 JSON 文件

amazon-web-services - 如何将 Superset 与 AWS athena 连接起来?

amazon-web-services - 将 Kinesis Firehose 设置为 CloudFormation 中 CloudWatch Events 规则的目标

Python piramiko,建立SSH连接时连接超时错误

python - 如何在 python 中使用 boto3 在 amazon-cognito 中创建用户

amazon-web-services - AWS Glue 不删除或弃用通过现已删除的 S3 数据生成的表

amazon-web-services - AWS Cloudwatch通过Kinesis Firehose登录到ElasticSeacrh

javascript - Firehose 无法承担角色

amazon-web-services - 如何使用boto3连接到多个aws资源?

amazon-web-services - 通过 AWS 上的 API 在胶水表上添加分区?