zoukankan      html  css  js  c++  java
  • 2020年寒假假期总结0201

      使用Sqoop将mysql数据传到hive

      系统环境:hadoop2.65,mysql5.7.28,sqoop1.47,hive1.2.2,虚拟机centos7,物理机windows10

      注意点:安装sqoop不要将目录设在hadoop下面,否则在运行下面命令时会发生找不到jar包的问题,我估计是系统将hadoop的lib目录认为成了sqoop的lib目录了。因为在我把相应的jar包放在hadoop的lib文件下时就可以通过,由于有很多jar包,所以一个jar找到了,又会有一个jar包找不到,所以建议不要放在hadoop目录下。

      操作要求:将物理机的mysql数据转到虚拟机的mysql,然后使用sqoop将虚拟机的mysql转到hive中。

      1.在物理机中使用Navicat的导出向导,获取sql文件,利用里面的建表语句,在虚拟机的mysql中建表,需要注意的是,linux的建表语句和windows有些许差异,比如:在编码的改动,需要将原来的编码utf8mb4_0900_ai_ci改成utf8_general_ci,utf8mb4改成utf8。

      2.然后利用传输工具将sql文件传给虚拟机,然后虚拟机开启mysql,使用source命令调用sql文件,然后执行文件将所有数据插入mysql中。

      3.然后我们在hive中创建相应的表,需要注意的是hive中没有varchar,需要使用string代替。

      4.(可有可无)在hdfs上创建文件夹,来存放mysql数据

      5.使用sqoop将mysql转到hdfs上,注意点:需要打开hdfs和yarn

     用于换行
    bin/sqoop用来启动命令
    import用来导入配置
    connect连接数据库
    用户名
    密码
    执行语句,$CONDITIONS在使用query语句时必须加上
    指明hdfs上的目标目录
    如果指定文件目录存在则先删除掉
    使用1个map并行任务
    启动压缩
    指定hadoop的codec方式 默认为gzip
    使用直接导入方式,优化导入速度,在mysql中速度提升比较明显
    字段之间通过制表符分隔
    bin/sqoop import            
    --connect jdbc:mysql://192.168.133.130:3306/holiday2020   
    --username root   
    --password 123456   
    --query 'select * where capital_info $CONDITIONS LIMIT 5000'   
    --target-dir /heiyang/data   
    --delete-target-dir   
    --num-mappers 1   
    --compress   
    --compression-codec org.apache.hadoop.io.compress.SnappyCodec   
    --direct   
    --fields-terminated-by '	'  

      命令就会开始执行,会得到以下信息:

       表示map完成,然后我们就可以看到hdfs上产生了两个文件

      注意点:如果是一直停留在job开启的界面,没有运行下去的话,可以尝试检查一下yarn是否有设置好,或者端口问题。

       6.最后使用hive将数据导入到后hive中即可

    load data inpath '/heiyang/data/' into table default.capital_info;

  • 相关阅读:
    javascript:void(0) 和 href="#"的区别
    Subverion仓库迁移知识点整理
    EasyUI出现多条边框重合的问题
    EasyUI相关知识点整理
    EasyUI添加进度条
    yum配置文件中baseurl和mirrorlist的区别
    xshell中出现的绿色背景的文件夹
    Docker相关知识整理
    mysql 实验论证 innodb表级锁与行级锁
    MySQL索引优化实例说明
  • 原文地址:https://www.cnblogs.com/heiyang/p/12249932.html
Copyright © 2011-2022 走看看