如何将PrestoDB数据插入Kafka Topic并解决插入时报错问题
问题原因
该报错是Presto Kafka连接器写入场景的典型配置缺失问题:你当前的表配置仅定义了消息体(value)的dataFormat为json,未显式声明消息key的序列化格式,Presto默认会给未配置的key使用dummy格式,该格式仅支持读取不支持写入,因此插入时触发报错。
解决方案
- 第一步:修改配置文件
/etc/kafka/mytable.json,补全key的格式配置。如果你不需要额外用Kafka消息key存储字段,可参考如下配置增加key字段声明:
{ "tableName": "mytable", "schemaName": "mykafka", "topicName": "mykafka.mytable", "key": { "dataFormat": "raw", "fields": [] }, "message": { "dataFormat": "json", "fields": [ { "name": "id", "mapping": "id", "type": "INTEGER" }, { "name": "name", "mapping": "name", "type": "VARCHAR" } ] } }
如果需要自定义消息key的内容,可把key的dataFormat改为json,同时在fields里添加对应key字段的映射规则即可。
- 第二步:将修改后的配置文件同步到所有Presto worker节点的相同路径下,确保所有节点配置一致。
- 第三步:重载Presto的Kafka catalog,或者重启Presto集群使配置生效。
配置生效后再次执行插入语句即可正常写入数据。
内容的提问来源于stack exchange,提问作者CompEng
相关产品推荐
相关产品推荐

