• sqoop


    SQOOP是用于对数据进行导入导出的。(在它的解压缩文件里面也有一个doc文件夹,里面也有官方文档,进入index.html)
        (1)把MySQL、Oracle等数据库中的数据导入到HDFS、Hive、HBase中
        (2)把HDFS、Hive、HBase中的数据导出到MySQL、Oracle等数据库中
    安装SQOOP
        export SQOOP_HOME=/usr/local/SQOOP
        export ...$SQOOP_HOME/bin:.....    
        sqoop.env.sh  需要改一下 项目最后一个视频50分钟有说到
    使用SQOOP
        输入命令sqoop
    
    注意:
        要把数据从HDFS中导入到mysql中,就意味着需要连接mysql,并对其进行操作,所以必不可少的需要驱动,所以需要把mysql的驱动
        放到...../sqoop/lib目录下。这一点和HIVE一样
    
    
    1.把数据从mysql导入到hdfs(默认是/user/<username>)中                          表名                            
      sqoop import --connect jdbc:mysql://hadoop0:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'  --null-string '**'  -m 1 --append  --hive-import
      sqoop import --connect jdbc:mysql://hadoop0:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'  --null-string '**'  -m 1 --append  --hive-import  --check-column 'TBL_ID' --incremental append --last-value 6
    
    --null-string '**' 表示,对于空的单元格用什么表示,这里是用**表示。  不能用--表示。会报错,因为--是特有字符
    -m 1:表示启动几个map来执行,默认4个,这和最后产生几个文件也有关系,应该是启动一个map,产生一个文件。
    --append 如果该命令重复执行,会报错==>说该文件已经在目录中存在了,但是加上--append之后,就可以重复执行了,并且每次执行会产生新的文件。
    --hive-import:表示导入到hive中。
    --check-column 'TBL_ID':表示增量导入的时候,需要验证的列,也就是说,当这一列有新增的时候,我们才导入。
     --incremental append:表示,增量导入的时候,出现增量的时候这么处理, 这里的append表示出现增量,用增加的方式处理。
    --last-value 6:表示上一次的最后一个值是到几。
        导入的增量部分在一个新的文件中(不知道可不可以修改)。
    
    2.把数据从hdfs导出到mysql中  (导出的时候,需要按照目录导出,不能按照文件导出 /dis代表的就是一个目录,不能写为/ids/id)
                                                      表名
      sqoop export --connect jdbc:mysql://hadoop0:3306/hive  --username root --password admin --table ids --fields-terminated-by '	' --export-dir '/ids'
     --export-dir '/ids':表示要被导出的目录
    3.设置为作业,运行作业(每次都输入这个命令太麻烦,所以把这个命令做成一个job,job --create myjob,其中myjob是名字,可以自己起)
      sqoop job --create myjob -- import --connect jdbc:mysql://hadoop0:3306/hive  --username root --password admin --table TBLS --fields-terminated-by '	'  --null-string '**'  -m 1 --append  --hive-import  
      sqoop job --list  查看都有哪些job
      sqoop job --exec myjob 执行job
    
    如何让job自动运行(就是想执行的时候不输密码。)
      在配置文件目录下,有一个sqoop-site.xml 可以进行设置   
      需要把原来的脚本删掉才可以,否则不生效 sqoop job --delete myjob,然后再创建job
    
        
    4. 导入导出的事务是以Mapper任务为单位。
        如果我就想启动4个事务,这么保证我的事务呢,可以加个--staging-table,这个意思就是,我在导入的时候,4个事务都导入到一个临时表中,然后再把临时表导入到hdfs,
        --clear-staging-table,表示导入完成之后清空那个临时表。
  • 相关阅读:
    Quartz.net 定时任务在IIS中未按时执行
    扩展方法
    mysql 实用语句
    jquery each map
    js匿名函数多时注意
    ASP.NET MVC3调用分部视图
    eclipse快捷键
    regular 点滴
    适配器模式
    php代码实现简单图片下载
  • 原文地址:https://www.cnblogs.com/mrxiaohe/p/5274324.html
Copyright © 2020-2023  润新知