关系数据库和 Hadoop 之间数据来回迁移?用Sqoop就挺合适的。它靠MapReduce干活,速度快,还容错。你想一次导个几十万条数据?没压力。
Sqoop的安装也不麻烦,Ubuntu 下直接sudo apt-get install sqoop
就能搞定。别看它名字老土,功能真不赖,导入、导出、建 Hive 表、跑 SQL 样样都行。
用sqoop help
看看命令列表就一目了然,像import
就是从数据库搬数据到 HDFS 的关键命令。想并发导入?加个--m
参数就行。默认存的路径是/user/${user.name}/${tablename}
,你也可以自定义,挺灵活的。
要是你嫌单表导入麻烦,那就上import-all-tables
,一口气把整个库搬进去,舒服。还支持增量导入,只拉新增数据,效率高不少。
了,也可以导出回数据库,用sqoop export
,配好路径和表名就能跑。再配合job命令定时调度,省心。顺手提一句,sqoop1比sqoop2稳定点,生产建议用前者。
如果你正做大数据,又要跟MySQL、Oracle打交道,Sqoop真的挺香的。多试几次,参数组合熟了,效率能提升不少。