如何将关系数据库转换为一个 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 中的键/值对表?