sqoop(一)数据库数据导入hive

sqoop(一)数据库数据导入hive

将达梦数据库数据导入到hive

将达梦数据库的驱动放到sqoop安装路径下的lib路径下(其他数据库同样操作)

sqoop命令是:

sqoop import --driver dm.jdbc.driver.DmDriver --connect \
 jdbc:dm://192.168.xx.xx:xxxx/METACENTER  \
  --username XXXXX  \
  --password xxxxx \
  --query "select * from case_type where \$CONDITIONS"  \
  --hive-import  \
  --create-hive-table \
  --target-dir /software/hadoop3.1.3/hadoop-3.1.3/to_case_type/  \
  --hive-database demo  \
  --hive-table to_case_type \
  --fields-terminated-by ',' \
  --delete-target-dir \
  -m 1

导入命令中参数的介绍:

 --driver 手动指定要使用的JDBC驱动程序类,如果是mysql,oracle,dbserver,postgresql等数据库,则不用指定
 --connect 用来指定数据库的URL连接
 --username 数据库的登录用户
 --password 数据库的登录密码
 --password-file 将密码存储到文件,然后去文件中获取数据库的连接密码
 --query或者--e 将查询结果的数据导入,使用时必须伴随参--target-dir,--hive-table,
                如果查询中有where条件,则条件后必须加上$CONDITIONS关键字
 --where 从关系数据库导入数据时的查询条件
 --table 用来指定查询的关系型数据库的数据表,与--query有一个即可
 --hive-import 将数据从关系数据库中导入到hive表中
 --create-hive-table 默认是false,即,如果目标表已经存在了,那么创建任务失败。
 --hive-table 后面接要创建的hive表,默认使用MySQL的表名
 --hive-database 指定要导入到hive中的指定的库中
 --fields-terminated-by 设定每个字段是以什么符号作为结束,默认为逗号
 --target-dir 指定HDFS路径
 --delete-target-dir 判断HDFS路径是否存在,如果存在,则先删除
 --m或–-num-mappers 启动N个map来并行导入数据,默认4个。(数量设置最好不大于节点的数量)
 --split-by 用于分割工作单元的表的列,建议选择数字类型的数据列,且数据量的分布尽可能的均匀,一般用来与--m搭配使用
 --direct 如果数据库存在直接连接器,请使用直接连接器
 --incremental append 用来指定以追加的方式对数据库进行增量抽取
 --check-column 用来指定进行增量校验的字段,一般指定为数字类型或者时间类型等可以进行大小比较的字段类型
 --last-value 该值是用来作为第一次导入的下界,从第二次开始,sqoop会自动更新该值为上一次导入的上界。也就是说第一做更新的时候一般是全量导入,
              第二次执行增量的时候是会把>第一次初始的值增量进去,并记录第二次最大的值。
 --hive-drop-import-delims 删除string字段内的特殊字符,如果Hive使用这些字符作为分隔符,hive的字段会解析错误、出现错位的情况。
                           它的内部是用正则表达式替换的方式把\n, \r, \01替换成""
 --hive-delims-replacement 将Hive记录\0x01和行分隔符(\n\r)从导入的字符串字段替换为用户定义的字符串
在运行时遇到的错误
1.java.io.IOException: No manager for connect string: jdbc:dm://xxxxx:port

原因是数据库连接url或者是没有指定相关的驱动类
检查是否引入了数据库的连接驱动,数据库的url拼写是否正确,以及是否指定了--driver参数。

2.在使用–password-file 时,一直报数据库用户名或密码不对。

原因是因为在Linux系统中,vim写文件时,会自动在文件的最后加上一个换行符,而sqoop并不会忽略末尾的换行符,所以会将含有换行符的密码提交给数据库,导致访问失败。所以可以用

echo -n "your_mysql_password" > /home/xxx/.mysql.password

来避免换行符的存在,或者在windows环境下创建好文件之后,再上传到服务器上。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_42934205

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值