说明
分区表本质是 HDFS 上的文件夹
,所以直接通过HDFS创建好文件,再使用 Hadoop命令
把数据上传到该目录,直接使用 select * from 表名
查看,是没有数据的,因为文件夹里的数据
与 Hive 的元数据
没有关联起来。
# 直接创建目录 直接上传分区 然后查询没有表 hive> dfs -mkdir /user/hive/warehouse/test.db/hive_db/mouth=01; hive> dfs -put /root/student.txt /user/hive/warehouse/test.db/hive_db/mouth=01; hive> select * from hive_db; OK Time taken: 0.099 seconds
关联的第一种方式( 最常用的 )
使用
load data local inpath '文件' into table 分区表名 partition(指定分区)
hive> load data local inpath '/root/student.txt' into table hive_db partition(mouth=01); Loading data to table test.hive_db partition (mouth=1) Partition test.hive_db{mouth=1} stats: [numFiles=1, numRows=0, totalSize=21, rawDataSize=0] OK Time taken: 0.553 seconds hive> select * from hive_db; OK 1 Bob 1 2 Black 1 3 Jeck 1 Time taken: 0.136 seconds, Fetched: 3 row(s)
关联的第二种方式
使用修复命令,修复分区表
msck repair table 分区表名;
hive> msck repair table hive_db; OK Partitions not in metastore: hive_db:mouth=01 Repair: Added partition to metastore hive_db:mouth=01 Time taken: 0.211 seconds, Fetched: 2 row(s)
关联的第三种方式
使用添加分区命令,添加一下分区
语法:alter table 分区表名 add partition(指定分区);
hive> alter table hive_db add partition(mouth="03"); OK Time taken: 0.238 seconds hive> select * from hive_db where mouth=03; OK 1 Bob 3 2 Black 3 3 Jeck 3 Time taken: 0.107 seconds, Fetched: 3 row(s)
版权声明:《 Hive 分区表 与 数据 关联的三种方式 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-7 10:01:36