美文网首页
Hive存储文件命名的规则

Hive存储文件命名的规则

作者: OldChicken_ | 来源:发表于2018-12-12 18:42 被阅读37次

    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纪录的无序特性相关。

    相关文章

      网友评论

          本文标题:Hive存储文件命名的规则

          本文链接:https://www.haomeiwen.com/subject/zduphqtx.html