==版本不兼容===
由于 sqoop1.4.7 不兼容 hbase2.x,导致执行报错
解决
据 此博文 说:
因为hbase版本太高了,将 hbase1.6.0/lib 下的jar包,复制到 sqoop的 lib 目录下,就好使
未亲测
准备
启动 hadoop
cd /program
bin/hadoop.sh
启动 zookeeper
hbase 依赖 zookeeper,所以需要先启动,详见下面链接:
zookeeper-3.4.x 单机启动、停止服务、查看服务状态、jps
zookeeper-3.4.x集群:启动、停止服务、查看服务状态、jps
启动Hbase
hbase2.1.x集群:启动、停止服务、查看服务状态、jps
全部导入
将MySQL某表所有字段、所有数据,导入到 Hbase 中
提示:由于版本不兼容,必须手动创建表
提示:数据库必须存在,否则报错
hbase
启动hbase shell:
hbase shell
查看表:
list
创建表:
create 'sqoop_dept','info'
sqoop 命令
cd sqoop-1.4.7
bin/sqoop import \
--connect jdbc:mysql://hadoop1:3306/scott \
--table dept \
--username root \
--password root \
--fields-terminated-by '\t' \
--m 1 \
--hbase-table "sqoop_dept" \
--column-family "info" \
--hbase-row-key "id"
解释
hive-import:表示导入到hivehive-overwrite:覆盖数据hive-database default:导入到 hive 的default数据库中hive-table dept:表示导入 hive 到dept表
执行过程
执行 2个 MapReduce:
第一个 MapReduce:查询MySQL,导出数据,HDFS 路径:
/user/root第二个 MapReduce:将数据导入到 Hive 中,HDFS 路径:
/hive/warehouse/sqoop_dept
注意
参数名和参数值中间只能有一个空格,否则可能报错
如下:
--password root # 前面多出空格,会报密码错误
--target-dir /test_sqoop_dept # 前面多出空格,生成的目录只有空格
查看数据
连接 Hive 数据库,执行下面sql,查看数据:
select * from default.sqoop_dept