如何使用水槽从 mysql 连续读取以加载到 hbase?
我熟悉 sqoop,但我需要从 mysql 源不断地做到这一点。是否需要自定义源才能执行此操作?
Sqoop 适用于从 RDBMS 批量导入到 HDFS/Hive/HBase。如果它只是一次导入,那非常好,它实现了它在纸上的承诺。但是当您想要实时增量更新时,问题就来了。在 Sqoop 支持的两种增量更新之间:
追加,这个允许你重新运行 sqoop 作业,每个新作业都从上一个旧作业结束的地方开始。例如。第一个 sqoop 作业仅导入第 0-100 行,然后下一个作业将根据 --last-value=100 从 101 开始。但是即使 0-100 更新了,追加模式也不会再覆盖它们了。
last-modified,这个更糟糕的是恕我直言,它要求源表有一个时间戳字段,指示该行最后一次更新的时间。然后根据时间戳,进行增量更新导入。如果源表没有类似的东西,那么这个是没有用的。
我想说,如果您确实掌握了源数据库,则可以使用 Sqoop 进入最后修改模式。
有很多方法可以做到这一点,但我会编写一个脚本,从 MySQL 获取数据并为每个生成一个Avro事件。
然后,您可以使用内置的 Avro 源接收此数据,并将其发送到 HDFS 接收器。