Confluent Operator环境KsqlDB REST API创建定义流是否生效?
KsqlDB REST API创建自定义结构流失败排查方案
- 首先排查请求JSON语法错误
你提交的第一个创建流的请求体缺少起始的{,属于非法JSON结构,部分版本的ksqlDB API遇到结构错误的请求时,会直接返回空的200响应,不会执行SQL语句。修正后的请求体如下:
{ "sql": "CREATE STREAM user_test_EKS(userId DOUBLE, name VARCHAR) WITH (kafka_topic='user_EKS', value_format='json', partitions=1);", "streamsProperties": { "ksql.streams.auto.offset.reset": "earliest" } }
- 确认绑定的Kafka Topic存在
带结构定义的CREATE STREAM不会自动创建WITH参数中指定的kafka_topic,而CREATE STREAM AS SELECT会在执行时自动生成目标topic。如果你的集群中不存在user_EKS这个topic,或者ksqlDB的服务账号没有该topic的访问权限,流会创建失败但不会返回明显错误,你可以先手动创建user_EKStopic后再重试。 - 检查SQL语法与权限
- 确认流名、topic名没有拼写错误,ksqlDB默认区分标识符大小写
- 确认ksqlDB服务账号有
CREATE STREAM的权限,以及对应topic的读权限
- 排查服务端日志
如果以上配置都正确,你可以查看ksqlDB Server的运行日志,所有执行错误都会在服务端留下记录,包括参数非法、权限不足、topic不存在等客户端没有返回的错误信息。
内容的提问来源于stack exchange,提问作者chaitanya varma
相关产品推荐
相关产品推荐

