Hive学习笔记——SerDe
SerDe 是Serializer 和 Deserializer 的简称,它提供了Hive和各种数据格式交互的方式。
Amazon的Athena可以理解是Amazon对标hive的一款产品,其中对SerDe的介绍如下
1 | https: //docs .aws.amazon.com /zh_cn/athena/latest/ug/serde-about .html |
对于Hive中经常使用的SerDe如下,参考了
Hive_10. Hive中常用的 SerDe 和 当前社区的状态
1.LazySimpleSerDe,用来处理文本格式文件:TEXTFILE
1 | https: //github .com /apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazySimpleSerDe .java |
2.RegexSerDe,可以使用java正则表达式来处理文本格式文件:TEXTFILE
1 | https: //github .com /apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/RegexSerDe .java |
3.JSONSerDe,可以使用它来处理json格式的文本文件:TEXTFILE
1 | https: //github .com /rcongiu/Hive-JSON-Serde/blob/master/json-serde/src/main/java/org/openx/data/jsonserde/JsonSerDe .java |
第三方的jar包,下载连接
1 2 | http: //www .congiu.net /hive-json-serde/1 .3.8 /hdp23/json-serde-1 .3.8-jar-with-dependencies.jar http: //www .congiu.net /hive-json-serde/1 .3.8 /hdp23/json-udf-1 .3.8-jar-with-dependencies.jar |
4.OpenCSVSerDe,可以使用它来处理csv格式的文本文件:TEXTFILE
1 | https: //github .com /apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/OpenCSVSerde .java |
5.ParquetHiveSerDe,可以使用它来处理Parquet格式的文件:PARQUET
1 | https: //github .com /apache/hive/blob/master/ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveSerDe .java |
6.AvroSerDe,可以使用它来处理Avro格式数据的serde:AVRO
1 | https: //github .com /apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerDe .java |
7.HBaseSerDe,可以使用它来集成Hive和Hbase
1 | https: //github .com /apache/hive/blob/master/hbase-handler/src/java/org/apache/hadoop/hive/hbase/HBaseSerDe .java |
8.EsSerDe,可以使用它来集成Hive和Es
1 | https: //github .com /elastic/elasticsearch-hadoop/blob/master/hive/src/main/java/org/elasticsearch/hadoop/hive/EsSerDe .java |
9.ThriftDeserializer,可以使用它来集成thrift和hive
1 | https: //github .com /apache/hive/blob/master/serde/src/java/org/apache/hadoop/hive/serde2/thrift/ThriftDeserializer .java |
10.MySQLSerDe
1 | https: //cwiki .apache.org /confluence/display/Hive/JDBC +Storage+Handler |
使用hive查询mysql需要注意调整分区参数,否则可能会导致数据重复或者连接过多,比如
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | CREATE EXTERNAL TABLE IF NOT EXISTS `xx.xx`( `a` int COMMENT 'from deserializer' , `b` string COMMENT 'from deserializer' , `c` int COMMENT 'from deserializer' ) STORED BY 'org.apache.hive.storage.jdbc.JdbcStorageHandler' TBLPROPERTIES ( "hive.sql.database.type" = "MYSQL" , "hive.sql.jdbc.driver" = "com.mysql.jdbc.Driver" , "hive.sql.jdbc.url" = "jdbc:mysql://xxx:3306/xx_db" , "hive.sql.dbcp.username" = "xx_username" , "hive.sql.dbcp.password" = "xx_pws" , "hive.sql.table" = "xx_table" , "hive.sql.dbcp.maxActive" = "1" , "hive.sql.query" = "SELECT a,b,c FROM xx_table" ) |
11.MongoSerde
1 2 | https: //github .com /mongodb/mongo-hadoop/ https: //blog .csdn.net /zz60708320/article/details/102722361 |
本文只发表于博客园和tonglin0325的博客,作者:tonglin0325,转载请注明原文链接:https://www.cnblogs.com/tonglin0325/p/13993159.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决