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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hive sql,serde怎么不引用我的字段?相关的知识,希望对你有一定的参考价值。

因为默认情况下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
答案

您可以通过将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

另一答案

由于某种原因,"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有关。

以上是关于hive sql,serde怎么不引用我的字段?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 hive 在 Join 操作期间不选择 SerDe JAR?

Hive系列之SerDe

Hive SQL中关于反引号的使用

HIVE Row Formats和SerDe

hive serde 中多分隔符字符串的正则表达式

Hive 如何存储数据,啥是 SerDe?