hive表或分区被误删了怎么找回?

当Hive表或分区被误删时,可以通过检查.Trash目录找回。本文介绍了一种方法,即创建与原表结构相同的外部表,指定被删除数据的位置,然后将数据重写回原表,从而恢复丢失的数据。强调了在线操作时备份的重要性。
摘要由CSDN通过智能技术生成

hive表或分区被误删了怎么找回?

在平常工作中,因为这样那样的原因表数据被误删了,这个时候要怎么找回呢?
先记一下昨天刚发生过的问题。
线上数据因为之前的误操作存在一些脏分区,比如像这样的:
在这里插入图片描述这种异常分区比较多,手动删除用alter table dw_dim.dim_shop_d_his drop partition(dt=‘2018-06-04’) 太多了,比较费劲。这个时候就考虑写个脚本批量删除,结果判断是否为脏分区的状态值设大了,导致正常数据被误删了好多。(这个时候就提醒我们在做线上操作的时候一定要做备份啊,虽然麻烦点,关键时候真的能救命!)

当然这种被删的分区也是能抢救下的,在/user/hadoop/.Trash (执行删除的用户是hadoop用户)
在这里插入图片描述创建个和原表相同结构的外部表dw_dim.dim_shop_d_his_tmp2,并指定这个地址。(在查询这个外部表的数据之前要先执行alter table dw_dim.dim_shop_d_his_tmp2 add partition(dt=‘2018-06-04’),要不然查不到数据)。
然后查询该外部表的数据overwrite到原表里就好了
下面展示一些 内联代码片

INSERT OVERWRITE TABLE tmp.dim_shop_d_his PARTITION(dt)
select * from dw_dim.dim_shop_d_his_tmp

这样丢失的数据就又找回来了。再重复一句,这个时候如果对表做了备份就会好很多。
当然其他类似的删除操作也差不多。

Hive中,分区是指根据数据的某个特定属性将中的数据分成多个分区存储的。这些分区可以被认为是的子集,每个分区都有一个特定的目录,这些目录存储有关分区的元数据以及该分区中的数据。Hive分区的作用是使数据的查询和管理更加高效,可以更快地对数据进行查询和过滤,同时也能够更容易地管理和维护数据。 举个例子,假设我们有一个包含销售数据的,其中包含了销售日期、销售员、销售地点等属性。如果我们将这个定义为一个分区,可以根据销售日期来分区存储数据。这样,每个分区都包含了一个特定日期的销售数据,可以通过查询特定的分区来快速查询和分析数据。例如: ``` CREATE TABLE sales ( sales_date DATE, sales_person STRING, sales_location STRING, sales_amount DOUBLE ) PARTITIONED BY (sales_date DATE) ROW FORMAT DELIMITED FIELDS TERMINATED BY ','; INSERT INTO sales PARTITION (sales_date='2021-01-01') VALUES ('John Doe', 'New York', 1000.0); INSERT INTO sales PARTITION (sales_date='2021-01-02') VALUES ('Jane Smith', 'Los Angeles', 2000.0); INSERT INTO sales PARTITION (sales_date='2021-01-03') VALUES ('Bob Johnson', 'Chicago', 1500.0); ``` 上述代码定义了一个名为sales的分区,根据sales_date属性进行分区。然后,我们向该中插入了三条数据,分别属于2021-01-01、2021-01-02和2021-01-03这三个分区。这样,每个分区都有一个特定的目录,存储有关该分区的元数据和该分区中的数据。我们可以使用类似以下的SQL语句来查询特定分区的数据: ``` SELECT sales_person, sales_location, sales_amount FROM sales WHERE sales_date='2021-01-01'; ``` 这样就可以快速查询2021-01-01这个分区的销售数据。同时,如果我们需要删除某个特定日期的销售数据,也可以直接删除分区,而无需删除整个。这样可以避免不必要的数据移动和复制,提高数据的管理和维护效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值