我可以使用KafkaTool和#1054 - Unknown column 'Bval' in 'field list'
来查看CREATE TABLE IF NOT EXISTS `dummy` (
`A` varchar(1) NOT NULL,
`B` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `dummy`
--
INSERT INTO `dummy` (`A`, `B`) VALUES
('A', 1),
('A', 2),
('B', 1),
('B', 2);
CREATE ALGORITHM=UNDEFINED SQL SECURITY DEFINER VIEW `dummyview`
AS SELECT `dummy`.`A`, `dummy`.`B`,
(case `dummy`.`A` when 1 then 10 else 5 end) as `BVal`,
`dummy`.`B` * `BVal` as `Total`
FROM `dummy`;
主题中的数据,但是如果我用自己的自定义工具直接读取数据,就无法弄清楚如何用python解析数据。即使使用KafkaTool,我也无法完美地破解键和值,有些奇怪的字符似乎没有遵循任何模式。我认为这与Scala将数据封送为原始字节的方式有关。
这是关键格式:[简短:版本] [字符串:组] [字符串:主题] [int32:分区]可以从https://github.com/apache/kafka/blob/trunk/core/src/main/scala/kafka/coordinator/group/GroupMetadataManager.scala获得-假定版本0是我的。
以下是十六进制格式的示例密钥:kafka-console-consumer
现在要遍历这些字节-
__consumer_offset
-版本0
00 01 00 16 63 6F 6E 73 6F 6C 65 2D 63 6F 6E 73 75 6D 65 72 2D 39 37 30 38 32 00 0D 73 74
61 67 69 6E 67 2D 73 70 65 6E 64 00 00 00 26
-标题开始,为null…没关系,但是其他消息以00
开头
01 00
-看起来不错的数据
02 00
-空,回车...没关系,但是其他人有16 63 6F 6E 73 6F 6C 65 2D 63 6F 6E 73 75 6D 65 72 2D 39 37 30 38 32
00 0D
-良好的数据(“分段支出”)
00 0C
-我想这是字符串加上分区的结尾,在这种情况下,73 74
61 67 69 6E 67 2D 73 70 65 6E 64
表示字符串的结尾?
消息类似的问题/不一致。数据的格式如何正确,以便我可以将其解析为字符串值?