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 主机

Access 2007 - 左连接返回正确结果,内连接不返回任何结果

内连接和没有任何连接条件的表中有两个ON条件是啥意思

死锁是不是会导致任何活动连接超时/中断?

socket.io 问题。无法连接。前端说连接:假,后端不记录任何东西