Hive内部表与外部表

Hive简介

Hive是一个翻译的软件,将HDFS文件映射给Hive,将元数据存储到store,底层会使用MapReduce或者spark tez进行运算,数据是存储到HDFS上。

内部表与外部表的标识

外部表被external修饰,而内部表则不需要修饰。

内部表与外部表的区别

  • 数据管理。内部表数据由Hive自身管理,而外部表数据由HDFS进行管理
  • 删除影响。删除内部表会直接删除元数据和存储数据,而删除外部表会删除元数据,但是HDFS上的文件不会被删掉
  • 修改影响。对内部表的修改会将修改同步给元数据,而对外部表的表结构和分区进行修改,需要进行修复
  • 存储位置。内部表的存储位置hive目录下的warehouse文件夹下,外部表的存储位置则取决于HDFS文件的位置,可以自行选择。

表区别参考链接

https://blog.csdn.net/qq_36743482/article/details/78393678

实际业务场景中

实际业务中,每天都会产生大量的新数据,我们不可能手动进行HDFS与Hive之间的数据映射。所以在实际开发中,常常需要根据业务自定义shell脚本来实现自动关联hive表与hdfs数据的批处理过程。例如:

#!/bin/bash
#yesterday='date --date='1 days ago' +%Y%m%d'
yesterday=20210114
tableName="itcast error"
ssh node03 '/export/servers/apache-hive-2.1.1-bin/bin -e "use
itcast_ods;alter table $tableName add partition(dt='$yesterday') location
'/apps/hive/warehouse/ods.db/$tableName/$yesterday'" '
if [$? -eq 0]; then
 echo "load $tableName partition $yesterday successful."
else
 echo "load $tableName partition $yesterday error."
fi
posted @ 2021-01-14 18:08  Rooooo0  阅读(322)  评论(0)    收藏  举报