hadoop - 从 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
但无法使用它。
解决方案
我尝试了以下选项,它对我有用,
1) 正则表达式测试器 - 对于这个新的线路场景,正则表达式非常复杂,而且它不起作用。
2) 使用https://github.com/mvallebr/CSVInputFormat提供的 CVS 解析器,并与他讨论了如何使用它。尝试了多个选项但不起作用。
3) 快速简单的解决方法是尝试使用 shell 或 Perl 命令替换文件中的新行的传统方法,它工作顺利。似乎这是一个更可行和简单的选择。
推荐阅读
- snowflake-cloud-data-platform - 雪花在中国举办?
- azure-blob-storage - Azure 存储资源管理器中的错误“无法读取未定义的属性 'accessTier'”。可能是什么原因造成的?
- javascript - 参数化异步函数返回 Promise { "_40": 0, "_55": "English", "_65": 1, "_72": null, }
- c++ - 如何为我的软件添加翻译?
- javascript - 如何使用 php 从滑块中获取活动图像名称
- python-3.x - pc 64位安装windows时出现kivy错误
- amazon-web-services - 如何使用一台本地机器作为客户端和 aws VM 实例作为服务器来设置分布式 JMeter 负载测试?
- java - 如何使用 Java 从 MySQL 获取实时数据
- java - 管理检查 JUnit 中抛出的 ExpectedException 的规则
- java - 连接到本机库时出错:E/eglCodecCommon: GoldfishAddressSpaceHostMemoryAllocator: ioctl_ping failed for device_type=5, ret=-1