sqoop学习(概念、目标、导入)(一)

前言

image.png

个人目前理解:
sqoop作用就是可以在mysql与hive之间相互抽取、导入。

扩大理解就是 关系型数据库(Mysql、Oracle)等 与 Hadoop(HDFS、Hive、Hbase)之间的桥梁工具。

那么为什么要用hadoop呢?
原因是:

  • 1、有价值数据通常存储在关系型数据库当中,但是需要进行聚合、计算等操作等加工才能被使用。
  • 2、实际业务场景在关系型数据库是不做这些计算操作,因为会影响业务数据存储或其他抽取需求。
  • 3、所以部分数据就通过sqoop抽取到hive中做运算,通过MapReduce程序进行再次加工(MapReduce涉及到sqoop的运算原理)

操作实例

操作流程如下:
hive中创建adventure_ods_hjf从mysql抽取dim_date_df表到hive当中

1、hive创建adventure_ods_hjf表
进入hive当中,输入以下命令

create database adventure_ods_hjf;

2、查看sqoop的使用方式
在linux的命令行当中(不用进入hive)

sqoop help
image.png

对应翻译:

Available commands: (可用命令)
  codegen            Generate code to interact with database records 
  (协同)              (生成代码以与数据库记录进行交互)
  create-hive-table  Import a table definition into Hive
  (创建hive表)         (将表定义导入到Hive中)
  eval               Evaluate a SQL statement and display the results
  (计算)             (计算一个SQL语句并显示结果)
  export             Export an HDFS directory to a database table
  (导出)              (将HDFS目录导出到数据库表)
  help               List available commands
  (帮助)              (罗列可用命令)
  import             Import a table from a database to HDFS
  (导入)              (从数据库中导入表到HDFS)
  import-all-tables  Import tables from a database to HDFS
  (导入全部表)         (从数据库中导入多表到HDFS)
  import-mainframe   Import datasets from a mainframe server to HDFS
  (导入主机)          (从大型机服务器导入数据集到HDFS)
  job                Work with saved jobs
  (任务)              (处理已存储任务)
  list-databases     List available databases on a server
  (罗列数据库)         (罗列服务器可用的数据库)
  list-tables        List available tables in a database
  (罗列表)             (罗列数据库中可用的表)
  merge              Merge results of incremental imports
  (合并)              (增量导入的合并结果)
  metastore          Run a standalone Sqoop metastore
  (元存储)             (运行独立的Sqoop元存储)
  version            Display version information
  (版本)              (展现版本信息)

参考命令链接:
https://www.cnblogs.com/alexzhang92/p/10927884.html

尝试查看版本


image.png

尝试导入mysql的以下数据dim_date_df


image.png
sqoop import \
-connect jdbc:mysql://106.15.121.xxx:3306/datafrog05_adventure \
-username frogdata05 -password xxxxdata'!'123 \
-table dim_date_df \
-hive-import \
-hive-table adventure_ods_hjf.dim_date_df \
-m 1

实际应该一行进行

sqoop import -connect jdbc:mysql://106.15.121.xxx:3306/datafrog05_adventure -username frogdata05 -password xxxdata'!'123 -table dim_date_df -hive-import -hive-table adventure_ods_hjf.dim_date_df -m 1

稍微解释一下:
sqoop import是调用sqoop的导入
-connect jdbc:mysql…… 连接mysql,需要ip/端口号/数据库
-username-password是mysql的账号密码,需要注意,如果是特殊字符如 !,需要用'!'处理
-table table_name table_name专指mysql的表名
-hive-import 导入hive
-hive-table xxx.xxx导入到hive中 数据库.数据表(不用建表操作)
-m 1 迁移使用1个进程

检查一下是否导入成功

hive
show databases;
use adventure_ods_hjf;
show tables;
select * from dim_date_df;
image.png

导入成功!

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容