mysql导入数据到hive中该如何做呢?
先登录hive
在hive中操作,创建数据库:
createdatabasefrommysql;
创建表
创建表
createtableimporthive_info(
numint,
namestring
)rowformatdelimitedfieldsterminatedby"\t";
数据也有了
执行语句
bin/sqoopimport\
--connectjdbc:mysql://mastercdh:3306/sqoop_test\
--usernameroot\
--passwordpassword\
--direct\
--tableimporthdfs\
--delete-target-dir\
--hive-import\
--hive-databasefrommysql\
--hive-tableimporthive_info\
--fields-terminated-by"\t"\
-m1
执行报错
但是我们数据库明明有
查看mysql元数据信息发现新建的库表都没有
难道没有使用mysql的元数据库?初始化出问题了吗?于是重新初始化
bin/schematool-dbTypemysql–initSchema
出现derby信息,还是旧信息
我的配置没有起作用?
为什么会有元数据库呢?说明之前是对的,仔细核对了一遍,发现是配置文件被我改动的问题。
这个地方写错路径了(截图已改对)
重新启动
Mysql中元数据库有了
重新创建上面的库表
元数据有信息了
在执行之前的sqoop语句
查看下hive中的数据已经有了
这个地方注意:运行mr任务时,结果将会保存在默认的输出目录上。还在/user/hive/warehouse。
从hdfs导入到mysql(export)
常规模式导入数据到mysql
我们创建一个表
createtabletomysql(
idintprimarykeynotnull,
namevarchar(20)notnull
);
导出语句
bin/sqoopexport\
--connectjdbc:mysql://mastercdh:3306/sqoop_test\
--usernameroot\
--passwordpassword\
--tabletomysql\
--export-dir/user/hive/warehouse/frommysql.db/importhive_info\
-m1\
--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
查看数据已经有了