Csv 蜂巢因不工作“\\”而逃逸
我在S3中有一个数据集 123,一些随机的,文本,236 我在此数据集上构建了一个外部表:Csv 蜂巢因不工作“\\”而逃逸,csv,hadoop,apache-spark,hive,bigdata,Csv,Hadoop,Apache Spark,Hive,Bigdata,我在S3中有一个数据集 123,一些随机的,文本,236 我在此数据集上构建了一个外部表: CREATE EXTERNAL TABLE db1.myData( field1 bigint, field2 string, field3 string, field4 string, field5 bigint, ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' ESCAPED BY '\\' LOCATI
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/';
问题/问题:
当我这样做的时候
从db1.myData中选择*
字段2显示为
some random
我需要这片土地
some random, text
明白了:
1.我无法更改分隔符,因为此位置有超过300个.csv文件
2.转义对象不是转义'\\'
3.我使用的是HIVE 0.13,所以在那里我不能使用CSV SerDe,也不允许我导入新的jar来集群添加新的jar是一个复杂的过程,因为我必须通过主管级别的批准
问题:
有没有办法让“逃逸者”活过来?!
还有其他解决办法吗??
欢迎所有建议
注:这不是一个重复的问题。如果您认为这是一个重复,请引导我到正确的页面,我将从此门户中删除此内容:如果您使用的是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;
有关详细信息,请参阅以下链接:
我必须使用:由'\134'转义,翻译为:由'\'转义
此外,由于我是通过从JSON文件传入语句来调用Athena create table语句,因此我必须添加一个额外的\来屏蔽JSON中的原始\。因此,我在JSON文件中的最后一条语句如下所示:通过“\\134”转义。您尝试过“\054”吗?注意:CREATE TABLE子句字段终止于、转义于和行终止于具有用于其参数的字符串文字的特殊规则,因为它们都需要一个字符。您可以使用由单引号或双引号包围的常规字符、八进制序列(如“\054”表示逗号)或-127..128范围内的整数(不带引号或反斜杠,解释为单字节ASCII字符),谢谢您的提示@sb0709。。我尝试了以“\054”结尾的字段用“\\”转义,以“\054”结尾的字段用“\\”转义,但两个字段都不起作用。在重新创建它们之前,我要先放下桌子。我想在这里补充另一个信息。。我的元存储是S3。请让我知道,如果我在这里遗漏了什么,我还想补充一点,在一些随机的文本中,文本之间有一个空格,文本之间有一些随机的,你解决过这个问题吗?如果是这样,分享你的发现会很有帮助。谢谢你的提示。但正如Gotcha-3中提到的,我使用的是Hive0.13