应用场景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使用
总结
- 大数据协作框架在大数据Hadoop 2.x生态系统中举足轻重,非常重要,针对不同需求诞生,辅助海量数据的存储和处理。
- Cloudera 发布的Hadoop版本CDH 5.x,有各种优势,其一各个框架版本间兼容问题,其二修复很多BUG和封装更好的接口以供实际项目中直接使用。
- Sqoop 就是RDBMS与HDFS直接数据转换工具,分为导入数据和导出数据,把握架构的核心及使用三要素,其底层是仅仅只有Map Task的MapReduce,充分利用分布式计算的功能。
网友评论