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 u0000
是CSV 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怎么不引用我的字段?的主要内容,如果未能解决你的问题,请参考以下文章