利用Sqoop把SqlServer數據庫中的表導入導出到HDFS

爲了能夠和HDFS之外的數據存儲庫進行交互,MapReduce程序需要使用外部API來訪問數據。Sqoop是一個開源的工具,它允許用戶將數據從關係型數據庫抽取到Hadoop中,用於進一步的處理。抽取出來的數據可以被Mapreduce程序使用。也可以被其他類似於Hive的工具使用。一旦形成分析結果,Sqoop便可以將這些結果導回數據庫,以供其他客戶端使用。

Sqoop的安裝

http://archive.cloudera.com/cdh/3/上下載安裝包。然後解壓。在安裝Sqoop之前,需要在機器上安裝java和Hadoop,並且需要在系統環境變量中設置HADOOP_HOME變量:

sudo gedit /etc/environment

然後在文件中添加HADOOP_HOME變量,並使其指向系統中Hadoop的根目錄。Sqoop安裝包中並不包含jdbc的SqlServer驅動,所以想在HDFS和SqlServer數據庫之間導入導出數據,則需要先下載jdbc的SqlServer驅動。到http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=21599 上下載jdbc驅動1033\sqljdbc_3.0.1301.101_enu.tar.gz,解壓,把sqljdbc4.jar包拷貝到Sqoop安裝目錄下的lib目錄下,但是這個只是jdbc中SqlServer的驅動,它並不支持HDFS與SqlServer數據庫之間數據的傳輸,還需要下載SQL Server-Hadoop Connector。下載地址爲http://www.microsoft.com/download/en/details.aspx?id=27584 ,解壓得到sqoop-sqlserver-1.0目錄,並在系統中添加環境變量MSSQL_CONNECTOR_HOME,讓它指向sqoop-sqlserver-1.0目錄。然後執行sqoop-sqlserver-1.0目錄下的install.sh。這個命令會將連接的jar文件和配置文件拷貝的Sqoop目錄中。至此就可以用Sqoop連接SqlServer和HDFS了。

在使用Sqoop之前要把Hadoop的進程打開。然後切換到Sqoop目錄下,就可以執行數據的導入和導出了。

例如導入:

$bin/sqoop import --connect 'jdbc:sqlserver://192.168.1.123;username=test;password=123;database=test' --table=test --target-dir /user/cloudcomputing/output -m 3

便可以把IP地址爲192.168.1.123機器上的test數據庫中的test表導入到HDFS上的/user/cloudcomputing/output目錄下。

導出:

$bin/sqoop export --connect 'jdbc:sqlserver://192.168.1.123;username=test;password=123;database=test' --table test --export-dir /user/cloudcomputing/output

便可以把/user/cloudcomputing/output目錄下的數據導入到192.168.1.123機器上的test數據庫中的test數據表中。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章