【问题标题】:HIVE escaped by not working '\\'HIVE 因不工作而逃脱 '\\'
【发布时间】: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


【解决方案1】:

我必须使用:ESCAPED BY '\134',它转换为:ESCAPED BY '\'

此外,因为我通过从 JSON 文件中传入语句来调用 Athena create table 语句,所以我必须添加一个额外的 \ 以掩盖 JSON 中的原始 \。所以我在 JSON 文件中的最后一条语句如下所示:ESCAPED BY '\\134'

【讨论】:

    【解决方案2】:

    如果您使用的是 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

    【讨论】:

    • 感谢您的提示。但正如 Gotcha-3 中提到的,我使用的是 Hive 0.13
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 2019-09-21
    • 2016-01-17
    相关资源
    最近更新 更多