我在S3中有一个数据集
%a
我在这个数据集上构建了一个外部表:
double
问题/问题:
当我做
123, "some random, text", "", "", 236
field2显示为
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
得到了:
1.我无法更改分隔符,因为此位置有超过~300 .csv文件
2. ESCAPED BY没有逃避' \\'
3.我使用的是HIVE 0.13,所以我不能使用CSV SerDe,我也不允许将新的jar导入集群(这是一个复杂的过程来添加一个新的jar,因为我必须通过Director级别的批准)
问题:
欢迎所有建议!
N.B: 这不是一个重复的问题。如果你认为它是重复的,请引导我到正确的页面,我将从这个门户网站:)
答案 0 :(得分:2)
我必须使用:ESCAPED BY '\134'
转换为:ESCAPED BY '\'
。
另外,由于我通过从JSON文件传入该语句来调用Athena create table语句,因此必须添加一个额外的\
来掩盖JSON中的原始\
。因此,我在JSON文件中的最终声明如下:ESCAPED BY '\\134'
。
答案 1 :(得分:0)
如果您使用的是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;
请参阅以下链接了解详情: