在平时使用的都是指定分割符的存储,在遇到特殊符号的,比如有好几个字符相连的,hive是不能自己处理的,这时候就需要在inputformat/outputformat上处理:
实现这个功能需要实现两个函数:
一个是InputFormat的next函数:
在这里处理的特殊字符是 @##@ 分割符号
:
@Override
public boolean next(LongWritable key, BytesWritable value)
throws IOException {
while (reader.next(key, text)) {
String strReplace = text.toString().toLowerCase().replace(
"@##@", "\001");
Text txtReplace = new Text();
txtReplace.set(strReplace);
value.set(txtReplace.getBytes(), 0, txtReplace.getLength());
return true;
}
// no more data
return false;
}
另一个是实现HiveIgnoreKeyTextOutputFormat的write函数:
@Override
public void write(Writable w) throws IOException {
String strReplace = ((Text)w).toString().replace("\001", "@##@");
Text txtReplace = new Text();
txtReplace.set(strReplace);
byte[] output = txtReplace.getBytes();
bytesWritable.set(output, 0, output.length);
writer.write(bytesWritable);
}
上述两个类可参考hive/src/contrib/org/apache/hadoop/hive/contrib/fileformat.base64下的两个类
然后就是使用:
1.
先把自己写的程序打包添加:
add
jar /home/hadoop/Desktop/generate-lib/format.jar;
2.
创建表:
create
table t_person(p_time string, id string,ip string, phone string,
blood_pressure int) stored as INPUTFORMAT
'org.apache.hadoop.hive.contrib.
fileformat.base64
.LogInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.contrib.
fileformat.base64
.LogOutputFormat';
3.
往表里添加数据:
load
data local inpath '/home/hadoop/Desktop/hivedata.log' overwrite into
table t_person;
分享到:
相关推荐
Hive多字节分隔符解决方案.docx
本资源适合hive使用log4j2作为日志去开启metastore审计日志,那么本文章就值得(不管是hive2还是hive3)
针对传统分布式模型在海量日志并行处理时的可扩展性和并行程序编写困难的问题, 提出了基于Hive的Web海量搜索日志分析机制。利用HQL语言以及Hadoop分布式文件系统(HDFS)和MapReduce编程模式对海量搜索日志进行分析...
这是我的一份课程作业,需要事先下载搜狗日志文件。有问题,可以问百度。里面也参考了其他博客主的文章,在最后有相关链接。
文档编写目的 Hive在0.14及以后版本支持字段的多分隔符,参考: ... 而Fayson在以前的文章中也基于C5...如何将多个字符作为字段分割符的数据文件加载到Hive表中,示例数据如下: 字段分隔符为“@#$” test1@#$test1name@#$t
hive日志系统实战
该实验数据主要用于Hive进行Apache Web日志的统计分析学习使用,数据量不是大。
“大数据技术原理与应用”课程实验报告 题目:实验六:熟悉Hive的基本操作 姓名:小猪猪 日期:2022/5/15 1、实验环境: ...1.创建一个内部表 stocks,字段分隔符为英文逗号,表结构如下所示: stocks 表结构:
一种基于Hive日志分析的大数据存储优化方法,王正也,李书芳,从2002年起,某金融机构积累了大量的银行卡支付日志数据。随着业务的不断增长,数据集高速增长,原生的Hive的查询性能已经不能令人�
基于Hadoop/Hive的web日志分析系统的设计,为广大大数据爱好者提供更好的帮助,喜欢可以下载
海量数据处理-hive数据仓库 很好的讲解的大数据海量数据处理的数据仓库模型建设
hive hive hive hive hive hive hive hive hive hive hive hive
Flume采集Nginx日志到Hive的事务表时需要导入到Flume下的Jar文件,具体使用方式可参见博文:https://blog.csdn.net/l1028386804/article/details/97975539
Impala 与Hive都是构建在Hadoop之上的数据查询工具各有不同的侧重适应面,但从客户端使用来看Impala与Hive有很多的...可以先使用hive进行数据转换处理,之后使用Impala在Hive处理后的结果数据集上进行快速的数据分析。
利用Hive进行复杂用户行为大数据分析及优化案例(全套视频+课件+代码+讲义+工具软件),具体内容包括: 01_自动批量加载数据到hive 02_Hive表批量加载数据的脚本实现(一) 03_Hive表批量加载数据的脚本实现(二) ...
使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...
hive-jdbc
Hive优化案例、Hive数据处理模式、Hive常见问题与优化、Hive实践
1 Hive 概念与连接使用: 2 2 Hive支持的数据类型: 2 2.1原子数据类型: 2 2.2复杂数据类型: 2 2.3 Hive类型转换: 3 3 Hive创建/删除数据库 3 3.1创建数据库: 3 3.2 删除数据库: 3 4 Hive 表相关语句 3 4.1 Hive ...