Hive之加载csv格式数据到hive

场景:

今天接了一个需求,将测试环境的hive数据导入到正式环境中。但是不需要整个流程的迁移,只需要迁移ads表


解决方案:

拿到这个需求首先想到两个方案:

1、将数据通过insert into语句导出,然后运行脚本

2、数据导出成csv格式的数据,然后Load进hive

方案一的实践过程中,发现几个问题,然后果断进行了方案二。就讲讲方案一存在的问题

  1. ads数据量较大。存在18W的数据量,对于大集群而言不值一提,但是公司的堡垒机资源较小,且用DBServer不支持18WSQL执行
  2. DBServer hive不支持SQL脚本运行,只能粘贴复制,还是问题一一样资源太小
    最终采用方案二

实践过程:

这里就说说方案二遇到的问题以及解决方案

  1. hive查询结果导出CSV时间格式问题。下图就我设置了CSV导出格式,但是还是存在问题,且时间格式还存在引号的情况,所以将数据导出来之后,用WPS进行打开,对时间格式进行一个调整,然后在保存为CSV结构的数据,用nodepad++打开即可

  2. hive导入成功但数据不存在。下面截图就展示了存在的问题。这个问题就是因为hive建表的问题,hive建表的格式不是文本格式导致的。我开始用的org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat ,后续如果不指定格式,默认格式就是org.apache.hadoop.mapred.TextInputFormat 即可导入进去

  3. hive数据导入之后一行的数据都存在某一个字段中。这个问题是因为hive没有指定数据导入后按照什么方式进行分割。SET SERDEPROPERTIES ('field.delim'=',', 'serialization.format'=' ')指定这个参数后,hive会将csv导入的数据按照逗号分隔。但是请注意,你的数据存在json数据或者别的逗号数据,导入后可能会产生数据错位的情况。在条件允许的情况下,将json和数据中的逗号,在WPS中用中文逗号替换即可。

  4. 其他的解决方案:其实这种类型的问题解决方案应该很多。例如:shell脚本执行hive insert语句、将数据插入到mysql用ETL的方式抽取到hive目标表。

总结:

导入数据考验一个细心的程度其实问题也不难,就是麻烦。如果其他网友有更好的解决办法,欢迎留言

相关推荐
RestCloud14 小时前
从架构师视角看ETL工具选型:如何构建可演进的数据集成平台
数据仓库·etl·cdc·数据处理·数据传输·elt
卷毛迷你猪1 天前
快速实验篇(A3)基于 Hive 的气象数据数仓构建与干旱指标初步分析
大数据·hadoop·分布式
卷毛迷你猪1 天前
快速实验篇(A4)Hive 数据仓库进阶:全站点干旱事件识别与多维统计分析
数据仓库·hive·hadoop·分布式
冰上浮云1 天前
Gravitino iceberg catalog backend 为hive 获取元数据过程
数据仓库·hive·hadoop·gravitino
段一凡-华北理工大学1 天前
工业领域的Hadoop架构学习~系列文章06:Hive数据仓库
数据仓库·hadoop·架构·高炉炼铁·工业智能体·高炉智能化·hive数据仓库
zgl_200537792 天前
源代码:跨数据库通用SQL语法解析与标注拆解
大数据·数据库·数据仓库·sql·etl·源代码管理
暴躁小师兄数据学院2 天前
【AI大数据工程师特训笔记】第13讲:数据库性能手术刀
大数据·数据库·数据仓库·sql·postgresql
段一凡-华北理工大学2 天前
工业领域的Hadoop架构学习~系列文章04:YARN资源调度架构
人工智能·hadoop·学习·架构·系统架构·高炉炼铁·高炉炼铁智能化
卷毛迷你猪2 天前
快速实验篇(A2-2)数据清洗规则修正与多语言实现验证
hadoop·分布式
段一凡-华北理工大学2 天前
工业领域的Hadoop架构学习~系列文章05:Kafka消息队列 - 工业数据流传输
人工智能·hadoop·学习·架构·kafka·工业智能体·高炉炼铁智能化