1

所以我做了所有的研究,在 HIVE 的任何地方都看不到同样的问题。

按照下面的链接,我对引号中的数据没有任何问题..

https://github.com/ogrodnek/csv-serde

我的外部表创建具有以下 serde 属性,但由于某种原因,默认的 escapeChar('\') 被quoteChar 取代,quoteChar 是我的数据的双引号(")。

CREATE EXTERNAL TABLE IF NOT EXISTS people_full(
`Unique ID` STRING,
.
.
.
.
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'  
WITH SERDEPROPERTIES (
   "escapeChar"    = "\\"
)  
STORED AS TEXTFILE

数据问题:

示例 HDFS 源数据:“\”抢劫业务目标 HIVE 输出:“”“抢劫业务

所以替换后"""Robs业务中看到的三个双引号导致数据不需要的数据定界(列是一个很长的字符串)可能是因为HIVE无法处理数据内部的三个双引号(quote(“)也是我的默认引号字符)?

为什么会发生这种情况,是否有解决方案?请帮忙。非常感谢。

最好的,阿莎

4

2 回答 2

2

要将您的 csv 文件导入到 hdfs 并在数据之间使用双 qoutes 并为该文件创建配置单元表,请按照配置单元中的查询创建外部表,该表可以正常工作并显示文件中的每条记录。

create external table tablename (datatype colname,datatype2 colname2) row format
SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES 
("separatorChar" = ",","quoteChar" = "\"") stored as textfile location '/dir_name/';

在这里,tablename 代表表的名称,数据类型类似于 string、int 或其他,colname 代表您要给出的列的名称,最后 dir_name 是 csv 或文本文件在 hdfs 位置中的位置。

于 2018-02-26T11:50:25.337 回答
0

尝试使用 Escaped by 它会起作用。请找到以下屏幕截图示例。 在此处输入图像描述

于 2017-10-06T07:55:29.127 回答