【发布时间】:2016-09-02 04:24:54
【问题描述】:
我在 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
field2 显示为
some random
我需要该字段
some random, text
问题:
1. 我无法更改分隔符,因为此位置有超过 300 个 .csv 文件
2. ESCAPED BY 没有转义 '\\'
3. 我使用的是 HIVE 0.13,所以我不能使用 CSV SerDe,也不能将新 jar 导入集群(添加新 jar 是一个复杂的过程,因为我必须通过主管级别的批准)
问题:
- 是否有使 'ESCAPED BY' 变得活跃的解决方法?!
- 还有其他解决方法吗??
欢迎所有建议!
注意:这不是一个重复的问题。如果您认为它是重复的,请引导我到正确的页面,我会从这个门户中删除它:)
【问题讨论】:
-
注意:CREATE TABLE 子句 FIELDS TERMINATED BY、ESCAPED BY 和 LINES TERMINATED BY 对用于其参数的字符串文字有特殊规则,因为它们都需要单个字符。您可以使用由单引号或双引号括起来的常规字符、八进制序列,例如 '\054'(表示逗号)或 -127..128 范围内的整数(不带引号或反斜杠),即解释为单字节 ASCII 字符 ...
-
感谢@sb0709 的提示。我尝试了
FIELDS TERMINATED BY '\054' ESCAPED BY '#'和FIELDS TERMINATED BY '\054' ESCAPED BY '\\',但它们都不起作用。在重新创建它们之前,我将删除表。我希望在此处添加的另一个信息.. 我的元存储是 S3。如果我在这里遗漏了什么,请告诉我 -
我还想补充一点,在
some random, text和文本some random, _space_ text之间有一个空格@ -
你解决过这个问题吗?如果是这样,分享你的发现会很有帮助。
标签: csv hadoop apache-spark hive bigdata