Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Csv 蜂巢因不工作“\\”而逃逸_Csv_Hadoop_Apache Spark_Hive_Bigdata - Fatal编程技术网

Csv 蜂巢因不工作“\\”而逃逸

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

我在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 '\\' 
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