2016-08-24 60 views
1

我打算使用Hadoop,Hive和Impala來分析大數據的堆棧。我準備好了,現在我正試圖從MySQL表導入數據。表的大小超過500 GB,我打算使用Sqoop如下:將大量的MySQL數據導入到Hadoop中

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來查詢它?

+0

我以前只是將數據庫導出爲csv,通過gzip將其導入HDFS。我給一個把這個變成shell腳本的人給一個cookie :) –

+0

MySQL支持使用'jdbc:mysql:// remote_host_ip/database_name?useCompression = true' cf. https://dev.mysql.com/doc/connector-j/5.1/en/connector-j-reference-configuration-properties.html和http://torstens-tech-blog.blogspot.com/2012/08/客戶端壓縮與MySQL的-in.html –

回答

1

Sqoop是最好的方法。它在散裝裝載中非常有效。

請仔細閱讀MySQL Hadoop Applier,它旨在執行MySQL和Hadoop之間的事件實時複製。

0

您可以設置「-m 4」而不是「-m 1」。這將允許以並行方式導入MySql數據,即不是使用1個映射器傳輸500GB,而是使用4個映射器並行傳輸數據(使用每個映射器傳輸125GB)。

0

SQOOP將更好地將500 GB的數據導入Parquet文件格式的列式HDFS格式。但是你可以使用'-m 12'來製作更多的並行映射器。