2014-07-15 98 views
3

我試圖用分區創建外部HIVE表。我的一些 列名有大寫字母。這在創建 表時造成問題,因爲帶有大寫字母的列名的值爲 ,返回爲NULL。然後,我修改了ParquetSerDe,以便通過使用SERDEPROPERTIES來處理此問題,並使用外部表(未分區)。現在我 試圖創建一個外部表WITH WITH分區,並且每當我嘗試 訪問大寫字母列(例如FieldName)我得到此錯誤。 從表名中選擇FieldName;Hive中區分大小寫的列名稱

FAILED: RuntimeException Java. Lang.RuntimeException: cannot find field 
    FieldName from 
    [org.apache.hadoop[email protected]4f45884b, 
    org.apache.hadoop[email protected]8f11f27, 
    org.apache.hadoop[email protected]77e8eb0e, 
    org.apache.hadoop[email protected]1dae4cd, 
    org.apache.hadoop[email protected]623e336d 
    ] 

有什麼建議可以想到嗎?我無法更改數據源的架構。

這是我用它來創建表的命令 -

CREATE EXTERNAL TABLE tablename (fieldname string) 
    PARTITIONED BY (partion_name string) 
    ROW FORMAT SERDE 'path.ModifiedParquetSerDeLatest' 
    WITH SERDEPROPERTIES ("casesensitive"="FieldName") 
    STORED AS INPUTFORMAT 'parquet.hive.DeprecatedParquetInputFormat' 
    OUTPUTFORMAT 'parquet.hive.DeprecatedParquetOutputFormat' 

,然後添加分區:

ALTER TABLE tablename ADD PARTITION (partition_name='partitionvalue') 
    LOCATION '/path/to/data' 
+0

你解決了這個問題嗎? –

+0

@AndréCasimiro自從我從事這項工作已經有一段時間了,那是在公司夏季實習期間。以下是Parquet郵件列表的摘錄,其中提到了問題:https://mail-archives.apache.org/mod_mbox/parquet-dev/201407.mbox/%[email protected] .com%3E 查看JIRA問題。對不起,我沒有在這裏發表我的調查結果..我記得我們曾經討論過這個問題,但我不記得它究竟有多好,以及我們做過甚麼。 – Raymond26

回答

0

這是一個老問題,但在分區列必須是大小寫敏感的,因爲它存儲在其上的unix文件系統。

路徑「/ collumnname =價值/」是路徑總是不同「/ collumnName =價值/」在UNIX

所以它應該被認爲是不好的做法,依靠蜂巢不區分大小寫的列名。

相關問題