配置单元2.1.1表格创建csv serde

8e2ybdfx  于 2021-06-26  发布在  Hive
关注(0)|答案(2)|浏览(363)

所以我做了所有的研究,但在Hive的任何地方都看不到同样的问题。
点击下面的链接,我对引号中的数据没有任何问题。。
https://github.com/ogrodnek/csv-serde
我的外部表创建有下面的serde属性,但是由于某些原因,默认的escapechar('')被我的数据的双引号(“)所取代。

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源数据示例:“\”robs business目标配置单元输出:““”robs business
所以在替换后的robs business中看到的三个双引号会导致数据不需要的数据定界(列是一个很长的字符串)可能是因为hive无法处理数据内部的三个双引号(引号(“)也是我的默认引号字符)?
为什么会这样?有解决办法吗?请帮忙。非常感谢。
最好的,阿莎

ef1yzkbh

ef1yzkbh1#

试着用它逃跑会有用的。请查看下面的截图示例。

1tu0hz3e

1tu0hz3e2#

要将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或other,colname表示要给出的列的名称,最后dir\u name是csv或文本文件在hdfs location中的位置。

相关问题