当前位置: 首页 > news >正文

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目标表。

总结:

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

http://www.lryc.cn/news/526014.html

相关文章:

  • Java web与Java中的Servlet
  • kafka常用目录文件解析
  • RV1126+FFMPEG推流项目源码
  • ANSYS SimAI
  • hedfs和hive数据迁移后校验脚本
  • 蓝桥杯单片机(八)定时器的基本原理与应用
  • 刷题总结 回溯算法
  • C++ 静态变量static的使用方法
  • Langchain+文心一言调用
  • 20250124 Flink中 窗口开始时间和結束時間
  • Android Studio安装配置
  • 设计模式Python版 单例模式
  • 7-Zip高危漏洞CVE-2025-0411:解析与修复
  • python实现http文件服务器访问下载
  • 《一文讲透》第4期:KWDB 数据库运维(6)—— 容灾与备份
  • ArcGIS10.2 许可License点击始终启动无响应的解决办法及正常启动的前提
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250124
  • 概率密度函数(PDF)分布函数(CDF)——直方图累积直方图——直方图规定化的数学基础
  • YOLOv5训练自己的数据及rknn部署
  • 计算机图形学:实验四 带纹理的OBJ文件读取和显示
  • SQL Server 使用SELECT INTO实现表备份
  • 【线性代数】基础版本的高斯消元法
  • Python标准库 threading 的 start 和 join 的使用
  • 无公网IP 外网访问媒体服务器 Emby
  • 【数据结构】_顺序表
  • [MySQL]数据库表内容的增删查改操作大全
  • 解决双系统引导问题:Ubuntu 启动时不显示 Windows 选项的处理方法
  • Java面试题2025-Spring
  • CentOS7安装使用containerd
  • Redis 集群模式入门