sqoop mysql2hive
2024-09-08 14:51:36
a./etc/profile添加export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HIVE_HOME/lib/*
b.将hive-site.xml 拷贝到 $SQOOP_HOME/conf目录下(否则报错找不到hive库)
--connect #关系型数据库连接
--username #关系型数据库连接用户名
--password #关系型数据库连接密码
--table #关系型数据库的表
--split-by #如果-m的数量不为1,则一定要加上该参数且最好是数值类型,否则会报错
--direct #快速模式,使用mysql自带的mysqldump导出数据
--delete-target-dir #如果hdfs的目录已经存在则先删除
--target-dir #导入到hdfs时的目标目录
--export-dir #从hdfs导出时的源目录
--fields-terminated-by #导入到hdfs时的hdfs文件分隔符
--input-fields-terminated-by #从hdfs导出时的hdfs文件分隔符
--hive-drop-import-delims #导入hive中的数据某列中如果有换行符或回车键可以删除
--hive-database #hive的数据库
--hive-table #hive的表
--hive-overwrite #覆盖之前的分区插入数据
--hive-partition-key #hive分区字段
--hive-partition-value #hive分区值
-m #指定map数量,也是生成的文件数
特别说明:如果指定的map的数量不为1,则一定要加上–split-by参数且最好是数值类型
sqoop import \
--connect "jdbc:mysql://deptest75:3306/test_data?useUnicode=true&characterEncoding=utf8" \
--username root \
--password 1q2w3e4r \
--table mysql_stu_info \
--delete-target-dir \
--hive-drop-import-delims \
--hive-import \
--hive-overwrite \
--hive-database test_data \
--hive-table stu_info \
--hive-partition-key ymday \
--hive-partition-value 20190329 \
--split-by age \
--fields-terminated-by '\t' \
-m 6
这里记住一点,导入hive分区表时,sqoop会把结果存在hdfs的一个临时文件中,如果table是mysql_stu_info,执行用户是hadoop则先将数据写入 hdfs的/user/hadoop/mysql_stu_info文件中
在后面执行 LOAD DATA INPATH 'hdfs://emr-cluster/user/hadoop/mysql_stu_info' OVERWRITE INTO TABLE `default.mysql_stu_info` PARTITION (ymday='20190329')
这里就需要注意同表不同库的冲突问题了
最新文章
- virtualBox下面安装linux系统如何共享目录
- Codeforces Round #229 (Div. 2) C. Inna and Candy Boxes 树状数组s
- js体验
- atitit.提升备份文件复制速度(4) ---数据挖掘 获取回收站文件列表
- jquery封装常用方法
- [css] 自适应布局 移动端自适应
- mvc:view-controller
- Spark Streaming揭秘 Day23 启动关闭源码图解
- StringBuffer和String 的例子
- yum安装lamp环境
- Robot Framework: 自定义自己的python库
- 逐步搭建Lamp环境之vim的三种模式以及基本命令
- 几种扫描二维码工具的User-Agent
- Git操作中crlf和lf冲突问题
- php中curl返回false的解决办法
- python:HTMLTestRunner测试报告优化
- Nmap扫描教程之网络基础服务DHCP服务类
- Frogger--poj2253
- 由于C++类库版本不同导致的OpenCV编译链接错误
- 系统调用方式文件编程-open