大数据面试之Sqoop

墨蓝 2023-02-17 15:55 94阅读 0赞

大数据面试之Sqoop

  • 1.Sqoop
    • 1.1 Sqoop架构?如何启动访问?
    • 1.2 导入数据
      • 1.2.1 MySQL=> Hive
      • 1.2.2 Oracle=> Hive
      • 1.2.3 Sqoop import原理
    • 1.3 导出数据
      • 1.3.1 Hive(HDFS)=>MySQL
      • 1.3.2 Sqoop export 原理

说明,感谢亮哥长期对我的帮助,此处多篇文章均为亮哥带我整理。以及参考诸多博主的文章。如果侵权,请及时指出,我会立马停止该行为;如有不足之处,还请大佬不吝指教,以期共同进步。

1.Sqoop

1.1 Sqoop架构?如何启动访问?

  1. Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以将一个关系型数据库(例如 MySQL ,Oracle 等)中的数据导入到HadoopHDFS中,也可以将HDFS的数据导入到关系型数据库中。

image

1.2 导入数据

1.2.1 MySQL=> Hive

  1. MySQL=> Hive (MySQL数据导入进Hive)
  2. 1.将指定的mysql表迁移到Hive
  3. sqoop import --hive-import --connect jdbc:mysql://192.168.1.1/dbname --table ${tablename} --username ${username} --password ${password} --hive-database${dbname} -m 1 --as-parquetfile
  4. 例如:
  5. sqoop import --hive-import --connect jdbc:mysql://172.16.16.15/test --table person --username mdba --password dsf0723 --hive-database test -m 1 --as-parquetfile
  6. 2.mysql指定库中的所有表迁移到Hive
  7. sqoop import-all-tables --hive-import --connect jdbc:mysql://192.168.1.1/dbname --username ${username} --password ${password} --hive-database ${dbname} -m 1 --hive-database anhui --as-parquetfile

1.2.2 Oracle=> Hive

  1. -Oracle => Hbase 将上述命令中的jdbc:mysql:改为jdbc:oracle:thin
  2. 例如:
  3. sqoop import --hive-import --connect jdbc:oracle:thin:@172.16.16.16:1523:orcl --table test --username cq2017 --password cq2017 --hive-database chongqing_2017 --hive-table test_20170505 -m 1 --as-parquetfile

1.2.3 Sqoop import原理

  1. 从传统数据库获取元数据信息(schematablefieldfield type),把导入功能转换为只有MapMapreduce作业,在mapreduce中有很多map,每个map读一片数据,进而并行的完成数据的拷贝
  2. Sqoop import 时,需要制定 split-by 参数。
  3. Sqoop 根据不同的 split-by参数值 来进行切分, 然后将切分出来的区域分配到不同 map 中。每个map中再处理数据库中获取的一行一行的值,写入到 HDFS 中。同时split-by 根据不同的参数类型有不同的切分方法,如比较简单的int型,Sqoop会取最大和最小split-by字段值,然后根据传入的 num-mappers来确定划分几个区域。

1.3 导出数据

1.3.1 Hive(HDFS)=>MySQL

  1. Hive(HDFS)=>MySQL (从Hive导入进MySQL)
  2. sqoop export --connect jdbc:mysql://192.168.1.1:3306/dbname --username root
  3. --password 123 --export-dir hivehdfs文件文件存放路径’ --table mysqltablename -m 1 --fields-termianted-by '\t'
  4. --MysqlTableName 必须是提前创建好的,且数据字段和字段类型,分隔符的设定与Hive中一致
  5. --Hive中没有特殊的分隔符要求的话,默认分隔符是/u0001 不用加命令项 --fields-termianted-by \t
  6. -- hivehdfs文件文件存放路径 /user/hive/warehouse/库名/表名

1.3.2 Sqoop export 原理

  1. 获取导出表的schemameta信息,和Hadoop中的字段match;多个map only作业同时运行,完成hdfs中数据导出到关系型数据库中介绍Hadoop业务的开发流程以及Sqoop在业务当中的实际地位
  2. 在实际的业务当中,我们首先对原始数据集通过MapReduce进行数据清洗,然后将清洗后的数据存入到Hbase数据库中,而后通过数据仓库HiveHbase中的数据进行统计与分析,分析之后将分析结果存入到Hive表中,然后通过Sqoop这个工具将我们的数据挖掘结果导入到MySql数据库中,最后通过Web将结果展示给客户。
  3. ![image](https://img-blog.csdnimg.cn/20190709110009266.png)

参考
参考
参考

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读