将数据从 NoSQL 迁移到 RDBMS

Posted

技术标签:

【中文标题】将数据从 NoSQL 迁移到 RDBMS【英文标题】:Migrate data from NoSQL to an RDBMS 【发布时间】:2020-03-31 07:37:43 【问题描述】:

我们在 HBase 中有数据,我们想迁移到 AWS Aurora (mysql),我们需要使用现有数据,因此必须以某种方式将 NoSQL 数据加载到 Aurora。

这不是一个非常大的数据库。只有几张桌子。

是否有任何最佳实践/工具可以将数据从 NoSQL 迁移到关系数据库?我在互联网上看到很多反面的问题(DB -> NoSQL),但我的要求有点不同,我没有找到任何有用的信息。

有人可以帮忙吗?我什至从哪里开始?

【问题讨论】:

【参考方案1】:

在不编写太多自定义代码的情况下执行此操作的一种简单方法是使用 Hortonworks (SHC) 的 Spark-HBase 连接器将数据从 HBase 表读取到 Spark 数据帧,然后将该数据帧写入 MySQL 表。关键的挑战是让 SHC 工作,因为根据我的经验,它对版本非常敏感。因此,诀窍是正确协调您的 Spark、HBase 和 SHC 版本(找到正确的组合比您想象的要棘手)。

但是,如果您设法正确获取所有依赖项,那么执行上述操作只需在 Jupyter Notebook 或 Pyspark 中编写几行代码即可。你可以在 Yarn 上运行它来并行化工作负载,以防它很大。应该管用。试试看吧。

【讨论】:

感谢您的回复和尝试的想法。我来自 SQL 背景,所以我也遇到了麻烦的是如何创建 RDBMS 表以容纳来自 NoSQL 表的数据,使用 column-families 而不是 columns。数据框在那里有帮助吗? RDB 表是否应该只反映数据框的结构? 如果你在谷歌上搜索一些 SHC 工作原理的 python 示例,它会非常直观——你在 Python 代码中定义一个表目录,它将 HBase 行和列映射到 Dataframe列(HBase 行被视为第一列)。从那里,您可以像往常一样将您的数据帧几乎一对一地映射到 MySQL 表上。几乎您在此搜索的任何示例都应该有效,但真正的技巧只是集成版本以确保它们都是可互操作的(否则您将获得大量 ClassNotFound 异常或 NoSuchMethod 异常)。

以上是关于将数据从 NoSQL 迁移到 RDBMS的主要内容,如果未能解决你的问题,请参考以下文章

我们如何使用 SQoop 对从 RDBMS 迁移到 HDFS 的数据进行测试?

TiDB 的数据迁移工具现已开源

从 Sql 迁移到 NoSql 数据库的限制

从MSAccessDB迁移到SQLLite

实现混合数据库系统的最佳实践 DynamoDB

Oracle 到 Apache Cassandra 数据迁移