zoukankan      html  css  js  c++  java
  • sqoop import/export使用经验

    一.先创建一个小表(test_01)进行测试(主节点IP:169.254.109.130/oracle服务器IP:169.254.109.100)
    1.测试连接oracle;
    sqoop list-tables --connect jdbc:oracle:thin:@169.254.109.100/库名 --username XX --password XX
    2.创建HDFS目录;
    sudo -u hdfs hdfs dfs -mkdir /oracle
    3.先将oracle中的数据导入HDFS;
    sudo -u hdfs sqoop import --connect jdbc:oracle:thin:@169.254.109.100:1521/库名 --username XX --password XX 
    --table TEST_01
    --target-dir /oracle/TEST_01 cd
    --fields-terminated-by "\01"
    --hive-drop-import-delims     
    --null-string '\N'           
    --null-non-string '\N'       
    -m 1
    4.权限控制;
    sudo -u hdfs hdfs dfs -chmod -R 777 /oracle/*
    5.登录hive创建外部表映射HDFS中的数据;
    beeline -u jdbc:hive2://169.254.109.130:10000 -n hive -p 123456
    create external table test_01(id int,name varchar2(20))location "/oracle/test_01";
    6.查询是否映射到数据;
    select * from test_01;
     
    二.从Hive导出表到Oracle
     
    1.在Oracle中创建相应的表,注意字段类型要一致;
    2.把hive中的数据写入hdfs
    insert overwrite directory '/user/senior/hive/exp_hive 'select * from emp ;
     
    sqoop  export 
    --table demo01   
    --connect jdbc:oracle:thin:@192.168.43.246:1521/库名
    --username XX --password XX 
    --export-dir /oracledb/tmp1/test   
    --columns  id,name,date_dt  
    --input-fields-terminated-by ',' 
    -m 3;
    三.参数说明
    1.import/export通用
    选项         含义说明

    --connect <jdbc-uri> 指定JDBC连接字符串
    --connection-manager <class-name> 指定要使用的连接管理器类
    --driver <class-name> 指定要使用的JDBC驱动类
    --hadoop-mapred-home <dir> 指定$HADOOP_MAPRED_HOME路径
    --help 打印用法帮助信息
    --password-file 设置用于存放认证的密码信息文件的路径
    -P 从控制台读取输入的密码
    --password <password> 设置认证密码
    --username <username> 设置认证用户名
    --verbose 打印详细的运行信息
    --connection-param-file <filename> 可选,指定存储数据库连接参数的属性文件

    2.import

    选项     含义说明
    --append 将数据追加到HDFS上一个已存在的数据集上
    --as-avrodatafile 将数据导入到Avro数据文件
    --as-sequencefile 将数据导入到SequenceFile
    --as-textfile 将数据导入到普通文本文件(默认)
    --boundary-query <statement> 边界查询,用于创建分片(InputSplit)
    --columns <col,col,col…> 从表中导出指定的一组列的数据
    --delete-target-dir 如果指定目录存在,则先删除掉
    --direct 使用直接导入模式(优化导入速度)
    --direct-split-size <n> 分割输入stream的字节大小(在直接导入模式下)
    --fetch-size <n> 从数据库中批量读取记录数
    --inline-lob-limit <n> 设置内联的LOB对象的大小
    -m,--num-mappers <n> 使用n个map任务并行导入数据
    -e,--query <statement> 导入的查询语句
    --split-by <column-name> 指定按照哪个列去分割数据
    --table <table-name> 导入的源表表名
    --target-dir <dir> 导入HDFS的目标路径
    --warehouse-dir <dir> HDFS存放表的根路径
    --where <where clause> 指定导出时所使用的查询条件
    -z,--compress 启用压缩
    --compression-codec <c> 指定Hadoop的codec方式(默认gzip)
    --null-string <null-string> 果指定列为字符串类型,使用指定字符串替换值为null的该类列的值
    --null-non-string <null-string> 如果指定列为非字符串类型,使用指定字符串替换值为null的该类列的值

     3.export

    选项     含义说明
    --validate <class-name> 启用数据副本验证功能,仅支持单表拷贝,可以指定验证使用的实现类
    --validation-threshold <class-name> 指定验证门限所使用的类
    --direct 使用直接导出模式(优化速度)
    --export-dir <dir> 导出过程中HDFS源路径
    -m,--num-mappers <n> 使用n个map任务并行导出
    --table <table-name> 导出的目的表名称
    --call <stored-proc-name> 导出数据调用的指定存储过程名
    --update-key <col-name> 更新参考的列名称,多个列名使用逗号分隔
    --update-mode <mode> 指定更新策略,包括:updateonly(默认)、allowinsert
    --input-null-string <null-string> 使用指定字符串,替换字符串类型值为null的列
    --input-null-non-string <null-string> 使用指定字符串,替换非字符串类型值为null的列
    --staging-table <staging-table-name> 在数据导出到数据库之前,数据临时存放的表名称
    --clear-staging-table 清除工作区中临时存放的数据
    --batch 使用批量模式导出

     
     
     
     
     
     
  • 相关阅读:
    win10 uwp 弹起键盘不隐藏界面元素
    win10 uwp 存放网络图片到本地
    win10 uwp 存放网络图片到本地
    sublime Text 正则替换
    sublime Text 正则替换
    win10 uwp 绘图 Line 控件使用
    win10 uwp 绘图 Line 控件使用
    AJAX 是什么?
    什么是 PHP SimpleXML?
    PHP XML DOM:DOM 是什么?
  • 原文地址:https://www.cnblogs.com/dozn/p/9066387.html
Copyright © 2011-2022 走看看