大数据协作框架我爱编程

sqoop导出数据

2018-03-20  本文已影响34人  明明德撩码

应用场景1:把需要清洗的结构化数据导入到hdfs中,通过hive进行清洗后,把清洗结果导出到结构化数据表中,进行展现。
应用场景2:把需要清洗的结构化数据导入到hdfs中,通过hive进行数据分析后,把分析结果导出到结构化数据表中,进行展现。
例如:分析日志中的ip、访问时间、访问内容进行分析,把分析报告,导出到结构化数据表中,通过web展现方式给用户使用结果数据。

导出数据RDBMS


导出数据

create table my_user2(id int(25),account varchar(255),password varchar(255),primary key(id));


bin/sqoop export \
--connect jdbc:mysql://hadoop-senior.beifeng.com:3306/test \
--username root \
--password 123456 \
--table my_user2 \
--num-mappers 1  \
--input-fields-terminated-by '\t' \
--export-dir /user/beifeng/sqoop/input/part-m-00000

说明:吧part-m-00000文件中的数据导入到mysql test库中的my_user2表中。
export-dir导出的文件所在目录。
input-fields-terminated-by:指的是导入到myuser2表中的数据格式。

Hive数据导入导出

使用Sqoop 将Hive表的数据与RDBMS表中数据,互为导入导出,其实对于Hive来说,数据本身就是存储在HDFS的目录下,所以Hive的数据导入导出实质还是RDBMS与HDFS数据导入导出。

从MySQL导入数据到Hive是一个写文件的过程

create table user_hive(
id int,
account string,
password string
)
ROW FORMAT DELIMITED  FIELDS TERMINATED BY '\t';


bin/sqoop import \
--connect jdbc:mysql://hadoop-senior.beifeng.com:3306/test \
--username root \
--password 123456 \
--table my_user2 \
--fields-terminated-by '\t' \
--num-mappers 1  \
--hive-import  \
--hive-database default \
--hive-table user_hive  \
--delete-target-dir 

文件输出
–fields-terminated-by <char> 设定每个字段是以什么符号作为结束的,默认是逗号,也可以改为其它符号,如句号.,示例如:–fields-terminated-by.
指的就是文件行内容之间的分割符号,这样user_hive表就可以匹配上了。

从Hive导出数据到MySQL

企业实际应用中,使用HiveQL分析数据时,常常将分析结果存储到Hive临时表中,然后使用Sqoop export将表中的数据导出到RDBMS对应表中,所以这个大家必须要会。从Hive表中将数据导出到MYSQL表中,实质就是HDFS文件数据导出到MYSQL表,与【6、导出数据RDBMS】是一样的而已。

从Hive导出数据到MySQL

bin/sqoop export \
--connect jdbc:mysql://hadoop-senior.beifeng.com:3306/test \
--username root \
--password 123456 \
--table my_user2 \
--input-fields-terminated-by '\t' \
--num-mappers 1  \
--export-dir /user/hive/warehouse/user_hive/part-m-00000

这个过程是一个读文件的过程
--input-fields-terminated-by '\t' \:读取文件的以什么样的格式。
--export-dir /user/hive/warehouse/user_hive/part-m-00000:所读文件的目录

Sqoop 的--options-file使用


总结

上一篇 下一篇

猜你喜欢

热点阅读