具有特殊字符的hive分区名称

时间:2015-04-02 19:07:48

标签: hadoop hive hdfs hue

我遇到了在Hive中创建分区表的问题,其中包含":"和" /"特殊字符作为分区列名称中的值。我发现这个JIRA分区本身已经创建了,但是我无法从Hue访问HDFS上的数据文件,也无法在Hue的分区查看器中看到它们的结果。我发现了一个相关的JIRA,但问题已修复并在版本0.6.0中提交(我在0.13上)

以下是我的原始数据:

1241241; Joe Schmo; TAXI DRIVER; 08/06/2015; 01/04/2014; 13:20

我的临时登台表是这样创建的:

CREATE EXTERNAL TABLE IF NOT EXISTS nyc_cab_drivers
        (
            License_Number bigint,
            Name string,
            Type string,
            Expiration_Date string,
            Last_Updated_Date string,
            Last_Updated_Time string
        )
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ';'
        LINES TERMINATED BY '\n'
        STORED AS TEXTFILE
        LOCATION '...'
        TBLPROPERTIES (
            'skip.header.line.count'='1'
        );

我的分区表定义是:

CREATE TABLE IF NOT EXISTS part2_nyc_cab_drivers
        (
            License_Number bigint,
            Name string,
            Type string,
            Expiration_Date string,
            Last_Updated_Date string
        ) 
        PARTITIONED BY (Last_Updated_Time string)
        CLUSTERED BY (Name) INTO 128 BUCKETS
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY '|'
        LINES TERMINATED BY '\n';

然后我将数据加载到分区表中,如下所示:

FROM nyc_cab_drivers ncd 
     INSERT OVERWRITE TABLE part2_nyc_cab_drivers 
     PARTITION (Last_Updated_Time) 
     SELECT ncd.License_Number, ncd.Name, ncd.Type, ncd.Expiration_Date, ncd.Last_Updated_Date, ncd.Last_Updated_Time; 

对于这个例子,我使用了动态分区,但是当我使用静态分区时也会出现同样的问题(即Last_UpdatedTime =" 12:41")。运行负载后,分区将显示在HUE中。我可以看到分区列,特殊字符由十六进制转义,如下所示:" 12%3A41"。当我点击分区值时,它会打开分区但是说“#34;操作没有结果。”#34;根据结果​​。当我点击路径时,Hue告诉我:

Cannot access: /user/hive/warehouse/default.db/part2_nyc_cab_drivers/last_updated_time=12:41.
IllegalArgumentException: Pathname /user/hive/warehouse/default.db/part2_nyc_cab_drivers/last_updated_time=12:41 from /user/hive/warehouse/default.db/part2_nyc_cab_drivers/last_updated_time=12:41 is not a valid DFS filename. (error 400)

我在HDFS中看到为每个分区创建的目录,我只是无法打开它来查看数据文件。当我进行show partitions查询时,我看到列出的分区意味着它们已经创建,只是与HDFS名称有关。当我将分区列更改为具有" /"的日期值时,会发生同样的问题。字符 - 唯一的区别是我可以打开分区目录并查看其数据文件,但它仍然没有显示分区的结果。

非常感谢任何帮助!

0 个答案:

没有答案
相关问题