我有这样一个有三列的大表:
+-----+-----+----------+
| id1 | id2 | associd |
+-----+-----+----------+
| 1 | 38 | 73157604 |
| 1 | 112 | 73157605 |
| 1 | 113 | 73157606 |
| 1 | 198 | 31936810 |
| 1 | 391 | 73157607 |
+-----+-----+----------+
Run Code Online (Sandbox Code Playgroud)
这持续38米行.问题是我想删除'associd'列,但运行ALTER TABLE table_name DROP COLUMN associd;只需要太长时间.我想要做这样的事情:ALTER TABLE table_name SET UNUSED associd;和ALTER TABLE table_name DROP UNUSED COLUMNS CHECKPOINT 250;那么这显然加速了过程,但它是不可能在MySQL?
是否有替代方法可以删除此列 - 可能只创建一个只包含两列的新表或者使用检查点进行删除?谢谢!
我正在尝试使用3个代理和zookeeper来测试运行单个Kafka节点.我希望使用控制台工具进行测试.我这样运行生产者:
kafka-console-producer --broker-list localhost:9092,localhost:9093,localhost:9094 --topic testTopic
Run Code Online (Sandbox Code Playgroud)
然后我这样运行消费者:
kafka-console-consumer --zookeeper localhost:2181 --topic testTopic --from-beginning
Run Code Online (Sandbox Code Playgroud)
我可以按照预期在生产者中输入消息并在消费者中查看消息.但是,当我使用bootstrap-server运行使用者的更新版本时,我什么也得不到.例如
kafka-console-consumer --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic testTopic --from-beginning
Run Code Online (Sandbox Code Playgroud)
当我在端口9092上运行一个代理时,这很好用,所以我很困惑.有没有办法可以看到zookeeper提供什么作为引导程序服务器?引导服务器与代理列表不同吗?Kafka使用Scala 2.11编译.
我正在开始使用Confluence Platform,它需要运行 Zookeeper ( zookeeper-server-start /etc/kafka/zookeeper.properties),然后运行 Kafka ( kafka-server-start /etc/kafka/server.properties)。我正在编写一个应该同时运行 Kafka 和 Zookeeper 的 Upstart 脚本。问题是 Kafka 应该阻塞直到 Zookeeper 准备好(因为它取决于它),但我找不到可靠的方法来知道 Zookeeper 何时准备好。以下是运行 Zookeeper 服务器启动后的一些伪代码尝试:
使用硬编码块
sleep 5
Run Code Online (Sandbox Code Playgroud)
在速度较慢的计算机上无法可靠工作和/或等待时间超过所需时间。
检查端口 2181 上何时运行某些内容(希望是 Zookeeper)
wait until $(echo stat | nc localhost ${port}) is not none
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用,因为它没有等待足够长的时间让 Zookeeper 接受 Kafka 连接。
检查日志
wait until specific string in zookeeper log is found
Run Code Online (Sandbox Code Playgroud)
这是粗略的,甚至没有一个字符串也不能在错误中找到(例如“绑定到端口[...]”)。
有没有可靠的方法来知道 Zookeeper 何时准备好接受 Kafka 连接?否则,我将不得不采用 1 和 2 的组合。