Hive:如何处理数据文件中有分隔符的文件?

Posted

技术标签:

【中文标题】Hive:如何处理数据文件中有分隔符的文件?【英文标题】:Hive: How to Handle files which has delimiter in the data file? 【发布时间】:2018-08-30 07:33:15 【问题描述】:

我有以下需要插入配置单元表的数据。数据在文件中具有默认分隔符。如何插入到 hive 表中?

10,Andrew,Man”,”ager,DE,PC
11,Arun,Manager,NJ,PC
12,Harish,Sales,NJ,MAC
13,Robert,Manager,PA,MAC
14,Laura,Engineer,PA,MAC

谢谢!

【问题讨论】:

【参考方案1】:

尝试使用CSV Serde

create table test_table(id int,...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = ",",
   "quoteChar"     = "”",
   "escapeChar"    = "\\"
)

根据数据更改quoteChar

【讨论】:

在 DDL 下面使用创建表名称(EmployeeID INT、FirstName STRING、Title STRING、State STRING、Laptop STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES (" separatorChar" = ",", "quoteChar" = """, "escapeChar" = "\\" ) 存储为文本文件;但是','没有显示在表格中。 “10”“安德鲁”“经理”“DE”“11”“Arun”“经理”“NJ”“PC”“12”“Harish”“销售”“NJ”“MAC”“13”“罗伯特”“经理”“PA”“MAC”“14”“劳拉”“工程师”“PA”“MAC”【参考方案2】:

您有两个选择,首先您可以使用"|"(管道)作为分隔符,然后插入配置单元表中,否则您必须将数据字段用双引号" " 括起来,然后在创建 DDL 时使用 OpenCSV Serde为您的 Hive 表。现在您可以查询表,Hive 将正确显示数据。

【讨论】:

以上是关于Hive:如何处理数据文件中有分隔符的文件?的主要内容,如果未能解决你的问题,请参考以下文章

处理 hive 中的多行记录

Hive如何处理大量小文件

Ruby--如何处理csv文件?

如何处理mysql中的“太多列”

在使用KETTLE工具进行ETL数据时,如果输入文本文档的路径是变化的,该如何处理? 文档路径随系统日期变化

Pandas中如何处理大数据?