sqoop动态分区导入mysql,使用sqoop import从mysql往hive含分区表中导入数据的一些注意事项...
先看下面这条语句,它实现的功能是将特定日期的数据从mysql表中直接导入hive
$ sqoop import \
--connect jdbc:mysql://192.168.xx.xx:3306/db_name?useSSL=false \
--username xxx --password xxxxxx \
--query "select d.id, d.callsign, d.sobt from t_flight_baseinfo d where d.id is not null and d.sobt >= '2020-12-27' and \$CONDITIONS" \
--target-dir /user/hive/warehouse/datapros.db/t_flight_baseinfo/dt=2020-12-27 \
--delete-target-dir --fields-terminated-by '\t' --split-by d.id \
--hive-import --hive-overwrite --m 2 --direct \
--hive-database datapros --hive-table t_flight_baseinfo \
--hive-partition-key dt --hive-partition-value 2020-12-27
以下对命令中的参数作简单说明:
--connect /--username / --password
很明显,这是mysql数据库的连接字符串
--query
这是选取数据的查询语句。这里需要注意的是:
每条查询语句必须要添加where条件;
末尾还要加上'$CONDITIONS'这个占位符;
当使用双引号包裹住这个查询语句时,'$CONDITIONS'前要加上转义符变为'\$CONDITIONS',而如果使用单引号来包裹,就不用加转义符!
--target-dir
mysql数据导入HDFS后的目标路径(也即hive表的“数据文件”地址)
--delete-target-dir
导入前是否先删除target-dir中定义的目录(如果存在的话)
说明:这个参数比较重要!一般情况下,同一条导入语句,第一次执行时,要不要这个参数没有关系,但如果是多次执行同一条导入语句,而又没有提前手工删除目标目录时,就出出现“Output directory hdfs://hadoop:9820/somepath/${target_dir} already exists”,因此,这个参数一定要加上
--direct
使用直接导入模式,可以提高导入速度
--m 2
指定并行执行导入数据任务的map进程个数
--hive-database / --hive-table t_flight_baseinfo
指定导入到hive中的目标数据库与数据表名称
--hive-partition-key / --hive-partition-value
指定hive数据表的分区信息
--hive-overwrite
指定hive中的目标表可以被多次覆盖写入
--hive-import / --create-hive-table
1、create-hive-table:在hive中创建目标表(不管它是不是已经存在),如果目标表已经存在,就会给出“AlreadyExistsException(message:Table XXX already exists”出错信息;
2、hive-import : hive-import在执行时,会自动生成一个建表的sql语句,当hive中不存在表时,它即自动创建目标表与存储目录,然后再导入数据;
mysql往hive带分区表中导入实践
1、在实践中发现,当需要创建带分区的表时,如果使用--create-hive-table参数,则每次都会提示表已存在错误(这个表确实是存在);不过,这个错误提示不影响命令的正确执行;
2、但是,如果不带上这个参数,如果之前这个分区已存在 ,则会出现在hive表中能查到这个分区,但是它实际的存储目录已经被删除(delete-target-dir参数的效果), hive-import会认为此分区已存在,就停止从mysql中往hdfs中导入数据,最后提示导入的数据numFiles=0,相当于分区表被清空;
3、如果不想每次都看到表已存在的错误提示,可以在执行导入命令之前,先执行一下 hive -e "alter table db_name.tb_name drop partition(partition_key='partition_value');"),先删除这个分区,这样hive-import就会创建hive表分区与重建存储目录。当然,这时候就不用加--create-hive-table参数了。
sqoop动态分区导入mysql,使用sqoop import从mysql往hive含分区表中导入数据的一些注意事项...相关推荐
- sqoop动态分区导入mysql,sqoop 导入数据到hive分区表(外表,内表) 指定分区 指定数据库 指定表...
sqoop 导入数据到hive 1.1.导入数据到hive分区表(内表),指定分区 创建hive分区表 –hive-database 指定数据库 –table 指定表 –hive-overwrite ...
- 远程登录另一个mysql 数据库_Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中...
技术交流群:233513714 一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以 ...
- php mysql实现下拉列表查询_php mysql如何实现通过下拉框查询显示数据库中的数据...
{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...
- Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中...
技术交流群:233513714 一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以 ...
- Hive向表中导入数据报错:Invalid postscript
报错如下: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask. ORC ...
- MySQL federated存储引擎--访问在远程数据库的表中的数据,而不是本地的表
一.FEDERATED简介 federated就像他的名字所说"联盟",意思就是:把两个不同区域的数据库联系起来,以致可以访问在远程数据库的表中的数据,而不是本地的表. 二.安装F ...
- mysql从只有一个备份文件(多个数据库的备份)中恢复数据到指定数据库
mysql -uroot -p 要恢复的数据库的名字 --one-database<备份文件 转载于:https://www.cnblogs.com/itfenqing/p/4429398.ht ...
- mysql 将xml插入数据库_从xml文档中读取数据并插入mysql数据库中
// TODO: Add your control notification handler code here CMarkup xml; xml.Load("色谱案例表.xml" ...
- 巨坑:从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
问题描述 从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null 问题原因 Sqoop在抽取数据到Hive或者HDFS时,会自动将类型为Tinyint( ...
最新文章
- GDB attach 用法
- 合适么?现在学ASP.NET Core入门编程……
- C语言(九)C语言概述
- php dlt645,DLMS - DLT645规约转换模块
- 日志组件DotNetCommon.Filelog
- 2022牛客寒假算法基础集训营1 ——H 牛牛看云
- PyTorch 1.0 中文文档:CUDA 语义
- 马化腾:5G技术可以影响甚至重构整个互联网服务形态
- 那些还在传程序猿35岁职业危机
- JAVA SSH框架的配置(myeclipse(9)+tomcat(6.0.35)+struts(2.2.3)+Spring(3.0)+Hibernate(3.0))
- webpack 优化react项目没有解决的问题
- Linux如何创建makefile文件,如何在Linux上为gcc创建简单的makefile?
- 20条理由告诉你,为什么当前的深度学习成了人工智能的死胡同?
- Arcgis 地理配准步骤(底图校正)
- Win10只读文件夹怎么删除
- python函数快查快用
- 外国优秀网页html,200个优秀的国外设计网站推荐
- 要看就看最好,16万字全网最硬核redis总结,谁赞成,谁反对?(被粉丝疯狂催更,已有人反馈看完专栏拿到大厂offer!!!)
- SAP QM 检验批里某检验特性的取样数量跟检验计划设置不符?
- windows10 android模拟器,手机windows10模拟器安卓版