簡體   English   中英

插入分區中帶有特殊字符的 Hive 表

[英]Insert into a Hive table with a special character in the partition

我以這種方式創建了下表:

CREATE EXTERNAL TABLE `my_table`(
  `user_id` string COMMENT '', 
  `this_date` string COMMENT '')
  partitioned by (
    `version` string COMMENT '')
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  's3://bucket/sub_bucket/sub_sub_bucket/table_folder'
TBLPROPERTIES (
  'parquet.compression'='SNAPPY')

我想插入查詢:

insert into my_talbe values ('1', '2018-12-01', "2019-01-01 12:33:47.456890")

但它失敗了。

我在 Athena 上執行此查詢,所以錯誤並沒有說太多,但我確定:是問題所以我嘗試了以下

insert into my_talbe values ('1', '2018-12-01', "2019-01-01 12 33 47.456890")

它有效。

是否有一個我可以在分區文件夾中擁有:? 我需要它是在不使用 Athena (Hive) 的情況下創建的。

兩個插入語句似乎都缺少分區部分。

對於具有分區列和其他兩列的分區表tab1 ,應插入數據,如下所示,

INSERT INTO tab1 partition ("abcdef") values (1, 2)

因此,提供的 INSERT 語句應該拋出這樣的錯誤

Error while compiling statement: FAILED: SemanticException 1:12 Need to specify partition columns because the destination table is partitioned. Error encountered near token 'my_table'

此外,回答您的原始問題 - 在 Hadoop 中,您無法創建名稱中包含/:字符的文件或目錄。

所以創建分區的更好方法是從名稱中排除這些字符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM