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

时间:2016-09-12 05:18:21

标签: csv hive double-quotes hive-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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

出于某种原因,const x = { a: { a: 1 } }, y = { a: { b: 1 } }; deepAssign(options)(x,y); // { a: { a: 1, b: 1 } } {{}}}并不像this plunker中所建议的那样为我工作。

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

"quoteChar" = "\u0000"

PS。我知道这不是什么问题,而是-- saving to file INSERT OVERWRITE LOCAL DIRECTORY 'file:/home/sidazhou/temp' ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' SELECT * FROM temp_table ; 代替ROW FORMAT SERDE