Hive存储文件命名的规则

Hive命令行

Hive在存储文件时候,有一些文件命名的规则,现在还不是很懂底层的原理,但是把现象记录下来,以备之后讨论。

hive> insert into table db.table PARTITION (part_date = '2018-12-12') values ('col1_value', 9),('col1_value', 10);

在表中插入数据后,可以hdfs对应路径下找到存储的文件

$ hadoop fs -ls /user/hive/warehouse/dw_dev.db/wxm_dev_hive02/part_date=2018-12-12
Found 1 items
-rwxr-xr-x   3 hadoop supergroup        356 2018-12-12 17:22 /user/hive/warehouse/db.db/table/part_date=2018-12-12/000000_0

继续插入另一些数据

hive> insert into table db.table PARTITION (part_date = '2018-12-12') values ('col1_value', 1),('col1_value', 2);

在hdfs对应路径下找到存储的文件,是一个名为000000_0的文件

$ hadoop fs -ls /user/hive/warehouse/db.db/table/part_date=2018-12-12
Found 2 items
-rwxr-xr-x   3 hadoop supergroup        356 2018-12-12 17:22 /user/hive/warehouse/db.db/table/part_date=2018-12-12/000000_0
-rwxr-xr-x   3 hadoop supergroup        356 2018-12-12 17:32 /user/hive/warehouse/db.db/table/part_date=2018-12-12/000000_0_copy_1

多了一个名为000000_0_copy_1的文件,继续添加,会生成类似的000000_0_copy_x文件。

Spark SQL

Spark SQL也可以在hive中操作文件,但是生成的文件名与命令行生成的文件名有所不同。执行命令insert into table db.table02 PARTITION (part_date = '2018-12-12') values ('col1_value', 6),('col1_value', 7),文件形式如下:

$ hadoop fs -ls /user/hive/warehouse/db.db/table02/part_date=2018-12-12
Found 2 items
-rwxr-xr-x   3 hadoop supergroup        345 2018-12-12 18:39 /user/hive/warehouse/dw_dev.db/wxm_dev_hive03/part_date=2018-12-12/part-00000-7eab8ca9-3ed1-42c6-8dfa-3ea622518542-c000
-rwxr-xr-x   3 hadoop supergroup        345 2018-12-12 18:39 /user/hive/warehouse/dw_dev.db/wxm_dev_hive03/part_date=2018-12-12/part-00001-7eab8ca9-3ed1-42c6-8dfa-3ea622518542-c000

值得注意的是,两个文件的文件名完全相同,或许这与hive纪录的无序特性相关。

    原文作者:OldChicken_
    原文地址: https://www.jianshu.com/p/bf333ce3b0ea
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞