Flink-BigTable - 任何连接器?
Posted
技术标签:
【中文标题】Flink-BigTable - 任何连接器?【英文标题】:Flink-BigTable - Any connector? 【发布时间】:2021-01-28 18:38:17 【问题描述】:我想使用 BigTable 作为 Flink 作业的接收器:
-
是否有开箱即用的连接器?
我可以使用 Datastream API 吗?
如何以最佳方式传递稀疏对象(99% 稀疏度),即确保在 BigTable 中没有为空值创建键/值?
我已经搜索了上述主题的文档,但无法回答这些问题。
感谢您的支持!
【问题讨论】:
Cloudera 解决了这个用例并引用了Flink HBase connector。好像可以manually installed。您会注意到在the example 中有一段代码,其中列添加了put.addColumn
,因此,在该部分中,您可以评估它是否为空并丢弃它。由于可以使用 HBase API 访问 BigTable,因此它可能会起作用。
感谢您的意见!知道这是否与@igordvorzhak 所指的连接器相同吗?
【参考方案1】:
我认为 Flink 没有原生 BigTable 连接器。
也就是说,您可以使用 Flink HBase SQL Connector 和 BigTable HBase client 从 Flink 访问 BigTable:
Flink job <-> Flink HBase SQL Connector <-> BigTable HBase client <-> BigTable
此连接器似乎与 Cloudera 提出的 Flink HBase connector 相似,可以是 manually installed(请参阅评论 @rsantiago)。
可以从 Cloudera 的 example 中获取关于稀疏数据持久性的一种可能方法,其中添加了 put.addColumn
的列,以便您可以在该部分中评估它是否为空并丢弃它(参见评论 @rsantiago)。
【讨论】:
谢谢。我想避免保留空值(在一行或一列内)不排除整个行或列,这是 Flink 的 Table API 中建议的方法,这意味着数据丢失。连接器本身没有选项吗? 既然我们讨论了same use case in Spark,所提议的方法是否可行?任何精度都在这里表示赞赏。谢谢! 理论上可以,但我不确定 Flink API 是否足够灵活,可以做到这一点。 上述@rsantiago 评论中提到的 Cloudera 连接器与您所指的连接器是否不同?他提出的避免空值的方法也符合您的建议吗?这两点都会让你的答案更有力。谢谢 @igordvorhak:很高兴您能根据这些事实和疑问更新您的答案。以上是关于Flink-BigTable - 任何连接器?的主要内容,如果未能解决你的问题,请参考以下文章
C# Mono MySql 连接器:无法连接到任何指定的 MySQL 主机