承接上一篇文档《sqoop的使用之import导入到HDFS》
mysql导入数据到hive中该如何做呢?
先登录hive
在hive中操作,创建数据库:
create database frommysql;
创建表
创建表
create table importhive_info(
num int,
name string
)row format delimited fields terminated by "\t";
数据也有了
执行语句
bin/sqoop import \
--connect jdbc:mysql://mastercdh:3306/sqoop_test \
--username root \
--password password \
--direct \
--table importhdfs \
--delete-target-dir \
--hive-import \
--hive-database frommysql \
--hive-table importhive_info \
--fields-terminated-by "\t" \
-m 1
执行报错
但是我们数据库明明有
查看mysql元数据信息发现新建的库表都没有
难道没有使用mysql的元数据库?初始化出问题了吗?于是重新初始化
bin/schematool -dbType mysql –initSchema
出现derby信息,还是旧信息
我的配置没有起作用?
为什么会有元数据库呢?说明之前是对的,仔细核对了一遍,发现是配置文件被我改动的问题。
这个地方写错路径了(截图已改对)
重新启动
Mysql中元数据库有了
重新创建上面的库表
元数据有信息了
在执行之前的sqoop语句
查看下hive中的数据已经有了
这个地方注意:运行mr任务时,结果将会保存在默认的输出目录上。还在/user/hive/warehouse。
从hdfs导入到mysql(export)
常规模式导入数据到mysql
我们创建一个表
create table tomysql(
id int primary key not null,
name varchar(20) not null
);
导出语句
bin/sqoop export \
--connect jdbc:mysql://mastercdh:3306/sqoop_test \
--username root \
--password password \
--table tomysql \
--export-dir /user/hive/warehouse/frommysql.db/importhive_info \
-m 1 \
--input-fields-terminated-by '\t'
查看下数据
sqoop运行一个file文件
在mysql重新建表file_to_mysql
创建文本
export
--connect
jdbc:mysql://mastercdh:3306/sqoop_test
--username
root
--password
password
--table
file_to_mysql
--export-dir
/user/hive/warehouse/frommysql.db/importhive_info
-m
1
--input-fields-terminated-by
'\t'
执行命令
bin/sqoop --options-file /data/test/filetomysql
查看数据已经有了