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

浙公网安备 33010602011771号