配置单元通过不工作“\\”而转义

cyvaqqii  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(392)

我在s3中有一个数据集 123, "some random, text", "", "", 236 我在此数据集上构建了一个外部表:

CREATE EXTERNAL TABLE db1.myData(
    field1 bigint, 
    field2 string, 
    field3 string, 
    field4 string, 
    field5 bigint, 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','
ESCAPED BY '\\' 
LOCATION 's3n://thisMyData/';

问题/问题:
当我这么做的时候 select * from db1.myData 字段2显示为

some random

我需要这片土地

some random, text

明白了:
1我无法更改分隔符,因为此位置有超过300个.csv文件
2转义者不是转义''
三。我使用的是hive0.13,因此无法使用csv-serde,也不允许将新jar导入集群(添加新jar是一个复杂的过程,因为我必须经过主管级的批准)
问题:
有办法让“越狱者”复活吗?!
还有其他解决办法吗??
欢迎所有建议!!
n、 b:这不是一个重复的问题。如果你认为这是一个重复,请引导我到正确的页面,我会把这个从这个门户网站:)

nle07wnf

nle07wnf1#

我不得不使用: ESCAPED BY '\134' 也就是说: ESCAPED BY '\' .
另外,由于我是通过从json文件传入语句来调用athena create table语句,所以我不得不添加一个额外的 \ 掩盖原作 \ 在json中。所以我在json文件中的最后一句话是这样的: ESCAPED BY '\\134' .

67up9zun

67up9zun2#

如果您使用的是hive 0.14,则可以使用如下csv serde:

CREATE TABLE my_table(a string, b string, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "'",
   "escapeChar"    = "\\"
)  
STORED AS TEXTFILE;

有关详细信息,请参阅以下链接:
https://cwiki.apache.org/confluence/display/hive/csv+serde

相关问题