介绍
本文介绍了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
- 创建关于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”);
再创建一个hive表将上面创建的hive外表中的数据导入进来
create table new_tianchi(id string,id2 string,id3 string,id4 string);
insert overwrite table new_tianchi select * from hive_tianchi;将数据从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’