首页 > 解决方案 > 从 CSV 文件加载到 hive 换行符

问题描述

我们有一个文件,它是以下类型:

1- Sam, Joshua , "52 DD dr,
   Lake Hiawatha" , New Jersey, 07034 
2- Ruchi,kumari,SNN Raj serenity,Bengaluru, 560068

第 1 行在外部表中分为 2 行,其余列在第 1 行为空,第 2 行包含其余数据。

需要有关在单个列中加载以克服此问题的最佳方法的帮助。在网上经历了几个解决方案,但不清楚。

尝试了以下选项:

1) 使用正则表达式 Serde

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' 
WITH SERDEPROPERTIES (
"input.regex" = '"*([^"]*)"*,"*([^"]*)"*'
)

但它没有用

2)来自github的CSVInputFormat https://github.com/mvallebr/CSVInputFormat

但无法使用它。

标签: hadoophivehdfshive-serde

解决方案


我尝试了以下选项,它对我有用,

1) 正则表达式测试器 - 对于这个新的线路场景,正则表达式非常复杂,而且它不起作用。

2) 使用https://github.com/mvallebr/CSVInputFormat提供的 CVS 解析器,并与他讨论了如何使用它。尝试了多个选项但不起作用。

3) 快速简单的解决方法是尝试使用 shell 或 Perl 命令替换文件中的新行的传统方法,它工作顺利。似乎这是一个更可行和简单的选择。


推荐阅读