学习大数据DAY43 Sqoop 安装,设置情况和使用

打印 上一主题 下一主题

主题 692|帖子 692|积分 2076

目次

sqoop 安装
设置 mysql
sqoop 安装
sqoop 指令集
sqoop 使用
sqoop 创建 hive 表
sqoop 全量导入表
sqoop 增量导入表
sqoop 全量导出表
sqoop 分区表导入表
sqoop 分区表导出表
上机练习


sqoop 安装

设置 mysql

   create database test     DEFAULT CHARACTER SET utf8     DEFAULT COLLATE utf8_general_ci;     --  创建数据库     show databases;     --  创建账号     Create user 'test'@'%' identified by 'test';     Grant all privileges on test.*     to test@'%'     identified by 'test' with grant option;     --  刷新权限设置     flush privileges;   sqoop 安装

   # 1.  拷贝安装包以及   mysql   的   jar   到  /root   目次 并解压     tar     -zvxf     sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz     -C     /opt/module/     # 2.  设置情况变量     vim /etc/profile.d/my_env.sh     #   参加   sqoop   路径     #SQOOP_HOME     export     SQOOP_HOME=/opt/module/sqoop-1.4.6.bin__hadoop-2.0.4-alpha     export PATH=$PATHSQOOP_HOME/bin     #  刷新情况变量     source /etc/profile     # 3.  设置   sqoop     cd $SQOOP_HOME/conf     cp sqoop-env-template.sh sqoop-env.sh     vim sqoop-env.sh     #  设置信息     export HADOOP_COMMON_HOME=/opt/module/hadoop-3.1.3     export HADOOP_MAPRED_HOME=/opt/module/hadoop-3.1.3     export HIVE_HOME=/opt/module/apache-hive-3.1.2-bin     #export ZOOKEEPER_HOME=/opt/module/zookeeper-3.4.10     #  拷贝   jdbc   驱动到   sqoop   的   lib   目次下     cp     mysql-connector-java-5.1.27-bin.jar     /opt/module/sqoop-1.4.6.bin__hadoop-2.0.4-alpha/lib/     #  连接测试     sqoop list-databases --connect jdbc:mysql://localhost:3306/     --username root --password root   sqoop 指令集


sqoop 使用

sqoop 创建 hive 表

   $ bin/sqoop create-hive-table \     --connect jdbc:mysql://hadoop102:3306/company \     --username test \     --password test \     --table test \     --hive-table test   sqoop 全量导入表

   #!/bin/bash     sqoop import \     --connect     "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc     oding=utf-8" \     --username test \     --password test \     --table student2 \     --hive-import \     --delete-target-dir \     --hive-database db_hive \     --fields-terminated-by "\t" \     --target-dir "/user/hive/warehouse/db_hive.db/student2_sqoop" \     --hive-table student2_sqoop \     -m 1   sqoop 增量导入表

   bin/sqoop import \     --connect jdbc:mysql://hadoop102:3306/test \     --username root \     --password root \     --table emp \     --check-column deptno \     --incremental lastmodified \     --last-value "10" \     --m 1 \     --append  sqoop 全量导出表

   #!/bin/bash     sqoop export \     --connect     "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc     oding=utf-8" \     --username test \     --password test \     -m 1 \     --table student2 \     --input-fields-terminated-by ',' \   --export-dir '/user/hive/warehouse/db_hive.db/student2'
sqoop 分区表导入表

   #!/bin/bash     sqoop_import(){     sqoop import \     --connect     "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc     oding=utf-8" \     --username test \     --password test \     --query     "select * from maket_p where cast(year(ord_date) as     decimal)='$part' and \$CONDITIONS" \     --hive-import \     --create-hive-table \     --hive-overwrite \     --fields-terminated-by "\t" \     --hive-database db_hive \     --hive-table market_sqoop \     --target-dir     "/user/hive/warehouse/db_hive.db/market_sqoop/type_p=$part/" \     --hive-partition-key type_p \     --hive-partition-value "$part" \     -m 1     }     for part in `mysql -uroot -proot --database=test -N -e \     "select distinct cast(year(ord_date) as decimal) from maket_p     order by cast(year(ord_date) as decimal) "`     do  echo "$part   年数据 导入  ..."     sqoop_import     done     beeline -u jdbc:hive2://hadoop100:10000/db_hive \     -n root -p root --outputformat=csv2 --showHeader=false \     -e 'msck repair table market_sqoop;'   sqoop 分区表导出表

   #!/bin/bash     sqoop_maket(){     sqoop export \     --connect     "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc     oding=utf-8" \     --username test \     --password test \     -m 1 \     --table maket_p \     --input-fields-terminated-by '\t' \     --export-dir "/user/hive/warehouse/db_hive.db/maket_p/$val/"     }     part=`beeline -u jdbc:hive2://hadoop100:10000/db_hive \     -n root -p root --outputformat=csv2 --showHeader=false \     -e 'show partitions maket_p;'`     for val in $part     do     echo $val     sqoop_maket     done   上机练习

   1 全表数据导出表自选     选择 hive 数据库的一张表导出到 mysql 的一张表里:   
  1. #!/bin/bash
  2. sqoop export \
  3. --connect
  4. "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc
  5. oding=utf-8" \
  6. --username test \
  7. --password test \--table student2 \
  8. --export-dir /user/hive/warehouse/db_hive.db/student2 \
  9. --fields-terminated-by "," \
  10. -m 1
复制代码
   效果展示:     
    2 全表数据导入   
  1. #!/bin/bash
  2. sqoop import \
  3. --connect
  4. "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc
  5. oding=utf-8" \
  6. --username test \
  7. --password test \
  8. --table student2 \
  9. --delete-target-dir \
  10. --create-hive-table \
  11. --hive-import \
  12. --hive-database db_hive \
  13. --hive-overwrite \
  14. --hive-table student2_sqoop \
  15. --target-dir /user/hive/warehouse/db_hive.db/student2_sqoop \
  16. --input-fields-terminated-by ',' \
  17. -m 1
复制代码

    3 分区表数据导出   
  1. #!/bin/bash
  2. sqoop_comm(){
  3. sqoop export \
  4. --connect
  5. "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc
  6. oding=utf-8" \
  7. --username test \
  8. --password test \
  9. --table log_ \
  10. --export-dir /user/hive/warehouse/db_hive.db/log/$part \
  11. --fields-terminated-by '\t' \
  12. -m 1
  13. }
  14. for part in \
  15. `beeline -u "jdbc:hive2://hadoop100:10000/db_hive" \
  16. --showHeader=False --outputformat=csv2 \
  17. -n root -p 123456 -e 'show partitions log'`
  18. do
  19. echo "-----------$part-----------"
  20. sqoop_comm
  21. done
复制代码

    4 分区表数据导入   
  1. #!/bin/bash
  2. sqoop_comm(){
  3. sqoop import \
  4. --connect
  5. "jdbc:mysql://hadoop100:3306/test?useUnicode=true&characterEnc
  6. oding=utf-8" \
  7. --username test \
  8. --password test \
  9. --query "select * from log_ where date_format(cast(date_ as
  10. date),'%Y%m%d')=$part and \$CONDITIONS" \
  11. --delete-target-dir \
  12. --create-hive-table \
  13. --hive-import \
  14. --hive-overwrite \
  15. --hive-table sqoop_log \
  16. --hive-database db_hive \
  17. --hive-partition-key load_date \
  18. --hive-partition-value $part \
  19. --target-dir
  20. /user/hive/warehouse/db_hive.db/sqoop_log/load_date=$part \
  21. --input-fields-terminated-by '\t' \
  22. -m 1
  23. }
  24. for part in \
  25. `mysql -utest -ptest --database=test -Ne "select distinct DATE_FORMAT(cast(date_ as date),'%Y%m%d')from
  26. log_"`
  27. do
  28. echo "---------$part---------"
  29. sqoop_comm
  30. done
  31. beeline -u "jdbc:hive2://hadoop100:10000/db_hive" \
  32. --showHeader=False --outputformat=csv2 \
  33. -n root -p 123456 -e 'msck repair table sqoop_log
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

尚未崩坏

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表