如何将关系数据库转换为一个 Bigtable

Posted

技术标签:

【中文标题】如何将关系数据库转换为一个 Bigtable【英文标题】:how to convert a relational database to one Bigtable 【发布时间】:2013-04-18 15:42:47 【问题描述】:

我想创建一个包含数据库中所有表的所有数据的大表,然后将此表导出到 csv 文件中,然后将此文件导入到 Hbase 中? 我的问题是第一步,即如何从所有数据库表中创建大表? 我会感谢任何帮助。 提前致谢。

【问题讨论】:

只要加入他们,当然假设他们都可以明智地加入...... 我有数千张桌子 好吧,除非它们都具有相同的结构,否则您需要退后一步。想想你将如何重新开始,然后看看你如何将现有数据放入其中。 【参考方案1】:

如果您希望将所有数据转储到 HBase 或 HDFS,您可以使用 sqoop 将所有表和数据传输到 HBase。将所有数据转换为一张大表可能效率不高或不可行。请注意,CLOB/BLOB 数据不能导出到 CVS 文件。

【讨论】:

好点。你可以使用“sqoop import-all-tables”工具来做到这一点。但是你需要记住这些事情:(1)每个表必须有一个单列主键。 (2)您必须打算导入每个表的所有列。 (3)不得使用非默认拆分列,也不得通过 WHERE 子句强加任何条件。【参考方案2】:

看看sqoop,可能会有帮助。

我们使用它将数据从 RDBMS 存储到 Hive 表中。至于 hive,它可以自动创建具有适当列名和类型的表。 它还需要split_by 选项用于自定义查询,该选项指定如何将数据拆分为块。

【讨论】:

【参考方案3】:

你为什么要这样做?编写 MapReduce 作业并将输出注入 HBase 表。

【讨论】:

以上是关于如何将关系数据库转换为一个 Bigtable的主要内容,如果未能解决你的问题,请参考以下文章

与 Google App Engine 和 BigTable 的递归关系

如何将平面/关系表转换为 BigQuery 中的键/值对表?

如何将 Sqlalchemy ORM 查询结果转换为包含关系的单个联接表?

Bigtable中稀疏表的稀疏和目的是啥?

将关系数据库 (OLTP) 转换为数据仓库模型

使用 GCP Cloud DataFlow 读取 BigTable 并转换为通用记录