我们知道,Hive的外部表可以连接HDFS中的任何目录的数据,那么Hive的外部表是否可以连接本身的内部表的数据呢?
答案是肯定,当然可以连接,因为Hive本身的数据就是存放在HDFS特定的目录中的,在Hive中创建外部表,关联内部表,方式和关联HDFS的目录是一样的。此处的目录只要换成Hive内部表在HDFS中的存储位置即可,注意目录的路径不要写错了。
例如:如下图的Hive目录结构,创建一个tbl_custom的外部表。
在另一个库中使用如下的建表语句:
create external table Tbl_Custom(CustomID int,AreaID int,Name string,Gender int) row format delimited fields terminated by '\t' location 'hdfs://hadoop01:9000/user/hive/warehouse/beijing.db/tbl_custom';
这样就可以在另外一个库中使用内部表的数据了。
如果你有一个业务场景,是需要连接多个MySQL数据库进行数据查询,那么你就可以备份这几个数据库到Hive或者HDFS中,然后利用外部表,将需要表格数据连接到一个库中进行操作。