Sqoop使用:关系型数据库与hdfs、hive、hbase之间导入、导出数据

介绍

本文介绍了sqoop的一些常用的操作。

使用

官网:http://sqoop.apache.org/
解压sqoop包,注意版本号。
进入bin目录,使用命令。

将mysql中的表数据导入到hdfs中:

./sqoop import --connect jdbc:mysql://192.168.200.10:3306/tianshi --username root --password password --table tianchi -m 1

其中,“-m 1”是设置map数量为1,则结果为一个文件,否则为多个小文件。

将hdfs上文件中的数据导出到已经建好的mysql表中:

./sqoop-export --connect jdbc:mysql://192.168.200.10:3306/tianshi --username root --password password --table test --export-dir ./test

在hive上建立一个和mysql中的一个表的结构一样的表:

./sqoop create-hive-table --connect jdbc:mysql://192.168.200.10:3306/tianshi --username root --password password --table tianchi

在hive中建立一个新表(若不指定,则表名相同),并且导入mysql中的一个表的数据:

./sqoop import –connect jdbc:mysql://192.168.200.10:3306/tianshi –username root –password password –table tianchi –hive-import -m 1

将数据从mysql导入到hbase

./sqoop import --connect jdbc:mysql://192.168.200.10:3306/tianshi --username root --password password --table tianchi --hbase-table tianchi --hbase-create-table --hbase-row-key user_id --column-family f -m 1

将数据从hive导出到已经建好的mysql中

./sqoop export --connect jdbc:mysql://192.168.200.10:3306/test --username root --password password --table tianchi --export-dir /user/hive/warehouse/tianchi --input-fields-terminated-by '\001' --input-lines-terminated-by '\n'

将数据从hbase导出到mysql

不能直接从hbase中导出数据到mysql,需要分几个步骤——
http://blog.csdn.net/zreodown/article/details/8850172

  1. 创建关于hbase表的外表:
    create external table hive_tianchi(id string,id2 string,id3 string,id4 string) stored by ‘org.apache.hadoop.hive.hbase.HBaseStorageHandler’ with SERDEPROPERTIES (“hbase.columns.mapping” = “:key,f:brand_id,f:type,f:v_date”) TBLPROPERTIES(“hbase.table.name” = “tianchi”);
  1. 再创建一个hive表将上面创建的hive外表中的数据导入进来
    create table new_tianchi(id string,id2 string,id3 string,id4 string);
    insert overwrite table new_tianchi select * from hive_tianchi;

  2. 将数据从hive导出到mysql,步骤同6
    ./sqoop export –connect jdbc:mysql://192.168.200.10:3306/test –username root –password password –table tianchi –export-dir /user/hive/warehouse/new_tianchi –input-fields-terminated-by ‘\001’ –input-lines-terminated-by ‘\n’

小鹏 wechat
公众号:数据Man
0%