hive sql,serde怎么不引用我的字段?

问题描述 投票:3回答:2

因为默认情况下serde引用字段“,我怎么能不使用serde引用我的字段?

我试过了:

row format serde "org.apache.hadoop.hive.serde2.OpenCSVSerde"
with serdeproperties(
"separatorChar" = ",",
"quoteChar" = "")

但我得到了

FAILED: SemanticException java.lang.StringIndexOutOfBoundsException: String index out of range: 0
csv hive double-quotes hive-serde
2个回答
2
投票

您可以通过将\u0000指定为引号字符来实现此目的。由于quoteChar需要一个字符串,你应该使用这个unicode版本的NULL

ROW FORMAT SERDE
    "org.apache.hadoop.hive.serde2.OpenCSVSerde"
WITH SERDEPROPERTIES (
    "separatorChar" = ",",
    "quoteChar" = "\u0000")

这个unicode NULL \u0000CSV writer类用作NO_QUOTE_CHARACTER的值:http://www.java2s.com/Code/Java/Development-Class/AverysimpleCSVwriterreleasedunderacommercialfriendlylicense.htm


0
投票

由于某种原因,"quoteChar" = "\u0000"并不像Nirmal's answer above所建议的那样为我工作。

保存到字段周围没有引号的文件时,我使用:

-- saving to file
INSERT OVERWRITE LOCAL DIRECTORY 'file:/home/sidazhou/temp' 
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' 
SELECT *
FROM temp_table
;

PS。我知道这不是被问到的,这与ROW FORMAT SERDE而不是ROW FORMAT DELIMITED FIELDS有关。

© www.soinside.com 2019 - 2024. All rights reserved.