测试环境 1.HDP 版本为2.4.2、Hadoop 版本为2.7.1 、Hive 版本为1.2.1、未启用Kerberos 2.CDP版本为7.1.1、Hadoop 版本为3.1.1、Hive 版本为...即使在测试的时候,使用8020 端口成功的完成了distcp 命令,但在跨hadoop 大版本的情况下仍建议使用webhdfs 来满足更好的兼容性 ?...2.7修复CDP集群表中元数据信息 在distcp 命令完成后,查看文件大小,确认数据文件已拷贝到CDP集群中,但是我们在hive中却依旧无法查到,这时我们需要有权限的用户执行如下repair命令来完成元数据信息的更新...msck repair table ods.ods_tghx_acckm; MSCK REPAIR TABLE命令主要是用来解决通过hdfs dfs -put或者hdfs api写入hive分区表的数据在...如果是都启用了Kerberos的集群配置互信后也同样可以使用这种方式进行迁移操作。
问题现象:在hive的分区表中删除了分区,命令执行返回成功,但是hdfs上对应的分区目录却没有删除。执行删除分区的操作,命令返回成功,元数据中也不存在该分区。...hadoop fs -ls /usr/hive/warehouse/logs/dt=2022/Found 3 itemsdrwxr-xr-x - hadoop supergroup...因为要删除的分区目录dt=2022/country=guangzhou是其他程序拉取数据生成的,正常情况下,生产数据后是要进行元数据同步(msck repair table 表名 ;),但是该分区目录生成后没有进行分区修复操作来同步元数据...解决方案:修复分区同步元数据,再删除该目录。...hive> msck repair table default.logs ;OKPartitions not in metastore: logs:dt=2022/country=guangzhouRepair
1、首先去垃圾箱找到被删除的表数据 hadoop fs -du -h /user/用户名/.Trash/Current/user/用户名/warehouse; 2、把数据copy到原始的文件夹 hadoop...fs -cp 垃圾箱/表名 原始文件夹/表名 3、修复分区 MSCK REPAIR TABLE 表名 4、验证数据 select * from 表名 limit 100;
首先,由于业务场景的需求调整可能会需要修改一些已经存在的表结构,比如增加字段、修改字段类型等,所以可能会有一些隐藏因素导致后续查询和插入数据报错; 原始数据表结构 create external...' STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat...,此时如果为空表可以直接删除该表,清除HDFS相应数据,并重新创建,避免各种未知问题;如果该表已经存有数据,则需要使用cascade指令强制新的分区元数据和旧的分区元数据保持一致,具体查看cascade...的使用,否则会导致后续查数据或者插数据出现问题; 还有可能遇到的问题的业务场景是:直接用hadoop命令复制删除hive存储数据后,需要add partition或alter来同步源数据信息,否则drop...这个也可算是hive的bug,尚未修复,但也可以理解为初衷不建议直接操作hdfs数据。,具体解决方案查看使用MSCK命令修复Hive表分区;
有两种方法可以创建配置: hms-mirror --setup - 提示LEFT和RIGHT集群构建默认配置文件的一系列问题。 使用默认配置模板作为起点。...也可以从beeline命令行获取(高可用的写法) 其他,需要使用到对应两个hive版本的standalone的jdbc jar包,未启用Kerberos的对应版本jdbc jar放在HOME/.hms-mirror.../g 替换完成后,使用beeline执行该文件 beeline -f test_db_RIGHT_execute.sql 因此脚本会自动执行MSCK操作,因此建议在DistCP之后再进行,否则可以手动执行...MSCK操作。...验证 可以看到test_db数据库中有同步过来的表 使用DistCP同步增量数据到CDP 源集群表修改数据 通过Hive插入两条数据 生成新快照 通过hdfs的文件管理器来生成test_db.db
文章目录 hive 分区表msck命令 Impala中的invalidate metadata和refresh 使用方式 INVALIDATE METADATA原理 REFRESH原理 使用原则 总结...创建完表后希望恢复hdfs上的元数据可以使用 msck repair table tablename; (tablename是你的表的名字)方法来进行修复元数据。...下面还有多层分区情况执行的: set hive.msck.path.validation=ignore; msck repair table tablename; 来进行多层分区修复。...如果catalogd尚未完成表的元数据加载或者statestored未广播完成,并且接下来请求到impalad-A(之前执行INVALIDATE METADATA的节点),此时impalad在执行语义分析的时候能够检测到表的元数据不完整...如果catalogd尚未完成表的元数据加载或statestored未广播完成,接下来请求到了其他的impalad节点,如果接受请求的impalad尚未通过statestored同步新的不完整的表元数据(
) $ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp $ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive...,改配置只对本次会话起作用。...,通常与UDF配合使用 8.在Hive中操作本地文件系统,只需要在命令前面加一个“!”...: load data local inpath '/usr/test/1.data' into table test partition (month='201304') 3>修复分区表的两种操作...msck repair table test; 2⃣️.
单个分区同步(从本地到远程集群拷贝) hadoop distcp /user/hive/warehouse/compass.db/page_activity_merchant_prd/p_data_day.../user/hive/warehouse/test_gs_dw_prd.db/ads_quickbi_user_behavior_emp_1d/ -- 同步HDFS数据(shell执行) hadoop...varchar(300); 删除app_version列 ALTER TABLE hive_user_reader REPLACE COLUMNS (read_src,source_id) 修复分区表...msck repair table bi_hive_db.hive_user_reader 3,拷贝表从远程集群到本地(跨集群),拷贝完后记得修复分区表 【如果没有队列则不要:-Dmapred.job.queue.name...jin_warehouse_dwd.db/hive_user_reader /hive/warehouse/jin_warehouse_dwd.db/hive_user_reader 4,拷贝从远程集群到本地(同集群),拷贝完后记得修复分区表
MSCK repair修复分区 MSCK REPAIR TABLE命令旨在手动添加在Hive元存储中不存在的分区,这些分区是添加到文件系统或从文件系统中删除过的。...手动修复分区。 MSCK REPAIR TABLE emp_part DROP PARTITIONS; 自动管理分区 您可以发现分区更改并自动同步Hive元数据。...您可以配置保留分区元数据和数据多长时间,并在保留期限过后将其删除。 局限性 通常,不建议在托管表上使用分区发现和保留。Hive元存储在表上获取排他锁,从而启用分区发现,这会减慢其他查询的速度。...1.假设您使用不支持分区发现的Hive版本创建了一个外部表,请对该表启用分区发现。...您可以使用数字和以下字符来表示保留时间: • ms(毫秒) • s(秒) • m(分钟) • d(天) 在此任务中,您将配置文件系统分区与metastore的自动同步以及分区保留期。
分区保留 您可以配置保留分区元数据和数据多长时间,并在保留期限过后将其删除。 限制 通常,不建议在托管表上使用分区发现和保留。Hive元存储在表上获取排他锁,启用分区发现,从而会减慢其他查询的速度。...自动分区发现和修复 自动分区发现和修复对于处理 Spark 和 Hive 目录中的日志数据和其他数据非常有用。您将了解如何设置分区发现参数以适合您的用例。积极的分区发现和修复配置可能会延迟升级过程。...假设您有一个使用不支持分区发现的Hive版本创建了一个外部表,请对该表启用分区发现。...使用MSCK repair修复分区 MSCK REPAIR TABLE命令旨在手动添加在Hive元存储中不存在的分区,这些分区是添加到文件系统或从文件系统中删除过的。...您可以使用数字和以下一个或多个字符来表示保留时间: ms(毫秒) s(秒) m(分钟) d(天) 在此任务中,您将配置文件系统分区与metastore的自动同步以及分区保留期。
方式:通过distcp命令同步集群数据 hadoop distcp -pbug -m xx 源集群 目标集群(hdfs路径为hive表的location位置) 迁移整体速度受集群间带宽...如果distcp操作提示xx集群不支持acl,说明对应集群没配置。新集群没配置可以修改配置并重启NM。旧集群不支持,说明旧集群根本就没有acl方面的设置,也不需要同步。 ...ii) 数据校验 通过 hadoop -fs du命令分别统计每个分区数据的大小,与原集群进行对比,做一个初步的数据校验。在第四步完成后通过hive命令统计每个分区的条数做对比。...hive表与数据的关系,需执行msck repair table *** ,修复hive表元数据。...通过编排脚本节点任务,将数据工厂hive集群迁至EMR的hbase集群过程自动化调度 在接口机安装EMR上一样的hadoop,hbase集群环境,然后调整脚本中的hadoop,hbase命令为该环境下的
这其实是因为该分区表在 HIVE 中的元数据与 HDFS 中的数据不一致。...通过 show create table 和 show partitions 可以发现,在HIVE元数据中该分区表只有一个分区,但HDFS上存在该表其它分区对应的目录和文件: show create...问题解决 知道了问题的直接原因和根本原因,解决方法也就顺理成章了:修复 hive 元数据跟hdfs实际的数据一致即可。...可以使用命令 msck repair table xxx来修复hive表的元数据: 元数据修复完毕,通过show partitions xx 发现,hive中已经可以查到原来遗失的分区。...(集群运维管理不规范,会造成这种现象) 可以通过 msck repair table xxx 来修复 hive表的元数据: MSCK [REPAIR] TABLE table_name [ADD/DROP
Sqoop 项目开始于 2009 年,最早是作为 Hadoop 的一个第三方模块存在,后来为了让使用者能够快速部署,也为了让开发人员能够更快速的迭代开发,Sqoop 独立成为一个 Apache项目。...请注意,2 与 1 不兼容,且特征不完整,它并不打算用于生产部署 2、安装配置 第一步:解压 第二步:修改配置文件 ## 修改配置文件名称 mv sqoop-env-template.sh...sqoop-env.sh ## 修改sqoop-env.sh配置 export HADOOP_COMMON_HOME=/usr/local/hadoop-2.7.2 export HADOOP_MAPRED_HOME...,下方真实场景中已经配置 $ bin/sqoop import \ --connect jdbc:mysql://hadoop102:3306/company --username root --password...#dynamic parition repair hive -e "msck repair table ndwt.table_20201218;" #impala metadata refresh impala-shell
创建一个文件粘贴上述记录,并上载即可,如下图: 然后上载 load data local inpath '/home/hadoop/Desktop/data' overwrite into table...,则需要修复(MSCK REPAIR TABLE table_name;) 创建一个外部表t2 create external table t2( id int ,name string...在我们之前配置的默认路径里 同样我们可以通过命令行获得两者的位置信息: desc formatted table_name; 注:图中managed table就是内部表,而external...If the structure or partitioning of an external table is changed, an MSCK REPAIR TABLE table_name statement...通过AS 查询语句完成建表:将子查询的结果存在新表里,有数据 一般用于中间表 CREATE TABLE new_key_value_store ROW FORMAT SERDE "org.apache.hadoop.hive.serde2
数据治理之集群迁移数据 准备两套集群,我这使用apache集群和CDH集群。...hadoop103:/etc/ 因为集群都是HA模式,所以需要在apache集群上配置CDH集群,让distcp能识别出CDH的nameservice [root@hadoop101 hadoop]#...hosts hadoop103:/etc/ 同样修改CDH集群配置,在所有hdfs-site.xml文件里修改配置 dfs.nameservices mycluster,nameservice1 dfs.internal.nameservices...台集群都是hadoop101,hadoop102,hadoop103,所以要关闭域名访问,使用ip访问 CDH把钩去了 apache设置为false 再使用hadoop distcp命令进行迁移,-Dmapred.job.queue.name...bash hive -e “use dwd;show tables”>tables.txt cat tables.txt |while read eachline do hive -e “use dwd;MSCK
配置环境 找⼀个空⽬录,接下来要配置 Flink 和 ChunJun 的环境,下⾯以 /root/chunjun_demo/ 为例⼦。..., 在 Hadoop 配置⽂件 hdfs-site.xml 可以找到", "hadoopConfig": { "dfs.nameservices": "ns1", "dfs.ha.namenodes.ns1...图片 查看⼀下 Hive 表的数据。 图片 注意, 如果是分区的 Hive 表,需要⼿动刷新⼀下 Hive 的元数据, 使⽤ MSCK 命令。...(MSCK 是 Hive 中的⼀个命令,⽤于检查表中的分区,并将其添加到 Hive 元数据中) MSCK REPAIR TABLE my_table; ChunJun 离线同步原理解析 HDFS 文件同步原理...● 使用限制 · 只有 RDB 的 Reader 插件可以使⽤ · 通过构建SQL过滤语句实现,因此只能⽤于RDB插件 · 增量同步只关⼼读,不关⼼写,因此只与Reader插件有关 · 增量字段只能为数值类型和时间类型
问题现象 cdh6.2.1中,开启 kerberos 和 sentry 的hive 中,使用 dml 语句 insert overwrite 插入数据到分区表的新分区时,会报错。...,不管使用静态分区还是动态分区模式,都会报错; 问题分析 为确定问题,首先尝试了不同场景,发现如下现象: 当使用 insert overwrite 插入数据到分区表的已有分区时,不会报错;(不管该分区下有没有数据...); 使用 insert into 插入数据到分区表的新分区时,不会报错; 对于非分区表,insert overwrite 和 insert into 都不会报错; 当使用insert overwrite...插入数据到分区表的新分区报错后,可以使用 msck repair test0317 修复hive metastore中相关元数据,修复后 select, show partitions 等语句可以查询到分区和该分区的底层数据...为了快速推进项目,笔者当时提出了以下 workaround: 业务测问题解决方法一:在 insert overwrite 后 (会报错),增加脚本执行命令 msck repair test0317 修复
简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。 为什么要使用Hive?...首先我们看下直接使用Hadoop所面临的问题: 人员学习成本高 项目周期要求太短 MapReduce实现复杂查询逻辑开发难度太大 由于Hadoop存在上述问题,所有引入Hive: 操作接口采用类SQL语法...原理:Hive通过用户提供的以下系列交互接口,接受到用户的指令(SQL),使用自己的Driver,结合元数据(MetaStore),将这些指令翻译成MapReduce,提交到Hadoop中执行,最后,将执行的结果输出到用户交互接口...Hadoop使用HDFS进行存储,使用MapReduce进行计算。...(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除; 对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR
Spark SQL为了更好的性能,在读写Hive metastore parquet格式的表时,会默认使用自己的Parquet SerDe,而不是采用Hive的SerDe进行序列化和反序列化。...该行为可以通过配置参数spark.sql.hive.convertMetastoreParquet进行控制,默认true。...设置为false时,会使用parquet的新版格式。例如,decimals会以int-based格式写出。...`/data/test_decimal/dt=20200529`; msck repair TABLE testdb.item; 上述1-3都能成功执行,数据也能保存到testdb.test_decimal...这个现象在实际应用环境中经常遇到,通用的解决办法就是将要保存的表中的数据类型与依赖的表(物理表或者临时表)的字段类型保持完全一致。
领取专属 10元无门槛券
手把手带您无忧上云