Hive一条Select语句,底层是如何读取HDFS文件的?
前提准备
MySQL、HDFS、Hive
示例
select * from tb_emp;
1.Hive会在MySQL元数据库中找到一张TBLS的表,这张表存储了Hive中每张表的信息。
2.Hive会根据表名找到这张Hive对应的SD_ID
3.Hive会在MySQL元数据库中找到一张SDS的表,这张表存储了Hive表与HDFS的对应关系
4.Hive会根据表名对应的SD_ID在SDS中找到表对应的HDFS地址
5.hive会读取这个目录下的所有文件
总结
第一步:根据表名到Hive元数据中,找到表对应的HDFS地址
第二步:将对应的HDFS地址目录中所有的数据进行处理