11-数据的导入与导出

11-数据的导入与导出 数据的导入与导出1.任务概述本任务旨在指导数据工程师按照标准流程完成关系型数据库MySQL与大数据平台Hive之间的双向数据迁移。学员将完成以下四个关键步骤在Hive中创建目标表、通过Sqoop将MySQL数据导入Hive、在MySQL创建接收表、将Hive数据导出回MySQL。通过这一完整的数据流转操作掌握Sqoop在双向数据同步中的核心应用为后续数据集成工作奠定基础。2.知识目标了解Sqoop在Hadoop与关系型数据库之间进行数据迁移的工作原理和流程。理解Hive数据表与MySQL数据表在结构定义、数据格式和存储方式上的对应关系。3.技能目标能够使用Sqoop import命令将MySQL中的数据完整导入到Hive数据表中。能够使用Sqoop export命令将Hive表中的数据筛选结果正确导出到MySQL数据库。4.素质目标培养在大数据组件协同工作环境下解决实际数据迁移问题的系统思维能力。提升在复杂数据流转场景中保持数据一致性和完整性的严谨工作态度。5.重难点分析重点 MySQL与Hive之间进行双向数据迁移。难点 MySQL与Hive之间的结构差异。6. 环境要求SqoopHadoop集群MySQLHive7. 任务实施步骤前提准备启动Hadoop集群三台机器启动元数据服务若无以下配置则在etc目录下的profile配置文件中加入以下变量export HADOOP_CLASSPATH$HADOOP_CLASSPATH:$HIVE_HOME/lib/*7.1 将MySQL中的数据导入至Hive要确定Mysql里边有相应的数据Mysql导入数据看附录1。先清理再导入以student表为例hdfs dfs -rm -r /user/root/student进入hive命令行中创建hive表use default;CREATE TABLE fromMySQL (id INT,StudentID INT,Name STRING,Gender STRING)ROW FORMAT DELIMITED FIELDS TERMINATED BY ,;进入Sqoop的bin目录下即进入/opt/programs/sqoop/bin目录下执行以下Sqoop命令将MySQL数据导入Hivesqoop import \--connect jdbc:mysql://192.168.47.201/your_database\--username root \--password 123456 \--tableyour_mysql_table\--hive-import \--hive-overwrite \--hive-table default.frommysql \--fields-terminated-by , \--m 1参数说明--connect 连接MySQL数据库的地址和库名--username MySQL登录用户名--password MySQL登录密码--table 要导出的MySQL源表名--hive-import 把数据导入到Hive中--create-hive-table 自动创建Hive表没有就新建--hive-overwrite 覆盖Hive表已有数据避免重复--hive-table Hive中的目标表名--fields-terminated-by 字段之间的分隔符这里用逗号--m 并行任务数1表示单线程验证导入结果--在Hive中查看表列表SHOW TABLES;-- 查询导入的数据SELECT * FROM fromMySQL;预期效果恭喜你学会了Mysql到hive的数据导入7.2在MySQL的test数据库中创建fromHive数据表字符集设置为utf8mb4提示可以使用客户端或命令行可参考附录2。执行以下语句创建 fromHive 表USE test;CREATE TABLE fromHive (id INT,studentID INT,name CHAR(20),gender CHAR(20));注意表结构需与Hive中待导出的表结构一致确保数据类型兼容。7.3 导出Hive中的筛选结果至MySQL首先确认表已创建mysql -h master -u root -p123456 -e DESC test.fromHive;进入Sqoop的bin目录下即/opt/programs/sqoop/bin执行以下Sqoop命令将Hive数据导出到MySQLsqoop export \--connect jdbc:mysql://master:3306/your_database\--username root \--password 123456 \--tableyour_mysql_table\--export-dir /user/hive/warehouse/frommysql \--input-fields-terminated-by , \--input-lines-terminated-by \n \--m 1参数说明--connectMySQL数据库连接URL格式jdbc:mysql://主机IP:端口/数据库名--usernameMySQL数据库用户名--passwordMySQL数据库密码--tableMySQL目标表名此表必须提前在MySQL中创建--export-dirHive表在HDFS上的存储路径指定从哪个HDFS目录读取要导出的数据--input-fields-terminated-by输入文件字段分隔符指定HDFS数据文件中字段之间的分隔符--input-lines-terminated-by输入文件行分隔符指定HDFS数据文件中行之间的分隔符--m指定Map任务数控制并行度小数据量建议用1验证导出结果-- 在MySQL中查询导出的数据SELECT * FROM fromHive;恭喜你学会了hive到Mysql的数据导出附录1附录2