KSQL流全部消息处理失败但对应Kafka Topic有数据问题求助
问题排查及解决方案
- 时间戳格式配置错误
你创建流时指定的TIMESTAMP_FORMAT为yyyy-MM-dd HH:mm:ss,但实际Topic中START_TIME字段的格式为M/d/yyyy H:mm(示例数据中对应值为5/21/2019 8:29),二者完全不匹配。ksqlDB处理消息时会优先解析指定的时间戳字段,解析失败会直接判定消息处理失败,这是你遇到问题的核心原因。
修正方案:将建流语句中的时间戳格式修改为和实际数据匹配的格式:
TIMESTAMP_FORMAT='M/d/yyyy H:mm'
- 可选校验:字段匹配校验
你可以核对实际消息的逗号分隔字段数量、顺序,是否和你定义的流字段完全对应,若字段数量不匹配,DELIMITED格式解析也会触发失败。从你给出的示例数据来看,字段数量和顺序是匹配的,无需额外调整。 - Key格式配置不影响当前问题
你尝试将Key format设置为none仍然失败,是因为当前消息的Key本身为null,Key格式配置不会触发解析错误,问题完全出在Value侧的时间戳解析环节。
你可以使用如下修正后的语句重新创建流:
CREATE STREAM ACCIDENTS_ORIGINAL (ID STRING, SEVERITY INTEGER, START_TIME STRING, END_TIME STRING, START_LAT DOUBLE, START_LNG DOUBLE, END_LAT DOUBLE, END_LNG DOUBLE, DISTANCE DOUBLE, DESCRIPTION STRING, NUMBER DOUBLE, STREET STRING, SIDE STRING, CITY STRING, COUNTY STRING, STATE STRING, ZIPCODE STRING, COUNTRY STRING, TIMEZONE STRING, AIRPORT_CODE STRING, WEATHER_TIME STRING, TEMPERATURE DOUBLE, WIND_CHILL DOUBLE, HUMIDITY DOUBLE, PRESSURE DOUBLE, VISIBILITY DOUBLE, WIND_DIRECTION STRING, WIND_SPEED STRING, PRECIPITATION DOUBLE, WEATHER_CONDITION STRING, AMENITY BOOLEAN, BUMP BOOLEAN, CROSSING BOOLEAN, GIVE_WAY BOOLEAN, JUNCTION BOOLEAN, NO_EXIT BOOLEAN, RAILWAY BOOLEAN, ROUNDABOUT BOOLEAN, STATION BOOLEAN, STOP BOOLEAN, TRAFFIC_CALMING BOOLEAN, TRAFFIC_SIGNAL BOOLEAN, TURNING_LOOP BOOLEAN, SUNRISE_SUNSET STRING, CIVIL_TWILIGHT STRING, NAUTICAL_TWILIGHT STRING, ASTRONOMICAL_TWILIGHT STRING) WITH (KAFKA_TOPIC='main', KEY_FORMAT='KAFKA', TIMESTAMP='Start_Time', TIMESTAMP_FORMAT='M/d/yyyy H:mm', VALUE_FORMAT='DELIMITED');
内容的提问来源于stack exchange,提问作者Florentina
相关产品推荐
相关产品推荐

