将大量MySQL数据导入Hadoop

将大量MySQL数据导入Hadoop,mysql,hadoop,import,Mysql,Hadoop,Import,我计划使用一个使用Hadoop、Hive和Impala的堆栈来分析大数据。我已经准备好了安装程序,现在我正在尝试从MySQL表导入数据。表大小超过500 GB,我计划使用Sqoop,如下所示: sqoop import --connect jdbc:mysql://remote_host_ip/database_name --username user_name -P --table table_name --hive-import --compression-codec=snappy --as

我计划使用一个使用Hadoop、Hive和Impala的堆栈来分析大数据。我已经准备好了安装程序,现在我正在尝试从MySQL表导入数据。表大小超过500 GB,我计划使用Sqoop,如下所示:

sqoop import --connect jdbc:mysql://remote_host_ip/database_name --username user_name -P --table table_name --hive-import --compression-codec=snappy --as-parquetfile --warehouse-dir=/user/hive/warehouse -m 1

有没有其他更好的方法来执行此导入,因为这涉及通过网络传输500 GB的数据。是否可以压缩数据并将其导入Hive,以便使用Impala查询数据?

Sqoop是最好的方法。它在散装运输中非常有效


请务必阅读有关的信息,它旨在执行MySQL和Hadoop之间事件的实时复制。

您可以设置“-m 4”而不是“-m 1”。这将允许以并行方式导入MySql数据,即不使用1个映射器传输500GB,而是使用4个映射器并行传输数据(使用每个映射器传输125GB)。

SQOOP最好将500GB数据导入柱状HDFS格式,即拼花文件格式。但是您可以使用'-m12',这使得可以导入更多的并行映射程序。

我以前只是将数据库导出为csv,通过gzip传输到HDFS中。我给了一个cookie给那些将其放入shell脚本的人:)MySQL支持使用
jdbc进行“在线”压缩:mysql://remote_host_ip/database_name?useCompression=true
cf.和