好程序员大数据学习路线之hive存储格式

好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile 、 sequencefile 、 rcfile 、 orc 、自定义 set hive.default.fileformat=TextFile; 默认存储格式为:textfile textFile:普通文本存储,不进行压缩。查询效率较低。
1.sequencefile:
hive提供的二进制序列文件存储,天生压缩。
sequeceFile 和 rcfile都不允许使用load方式加载数据。需要使用insert 方式插入
默认支付压缩、分割,使用便捷、写和查询较快。sequencefile和压缩属性可以搭配使用。
create table if not exists seq1(
id int,
name string
)
row format delimited fields terminated by ‘\t‘
lines terminated by ‘\n‘
stored as sequencefile
;
###加载数据错误方式
load data local inpath ‘/home/user‘ into table seq1;
###加载数据正确方式
insert into table seq1
select from user1
;
2.rcfile:
rcfile可以进行行列混合压缩,将附近的列和行的数据尽量保存到相同的块里面,该存储格式会提高查询效率,但是写数据较慢。该方式和gzcodeC压缩属性结合不是很好() set mapred.output.compression=true; set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
###创建rcfile表:
create table if not exists rc1(
id int,
name string
)
row format delimited fields terminated by ‘\t‘
stored as rcfile
;
create table if not exists rc2(
id int,
name string
)
row format delimited fields terminated by ‘\t‘
stored as rcfile
;
###加载数据错误方式
load data local inpath ‘/home/user‘ into table rc1;
###加载数据正确方式
insert into table rc2
select
from user1
;
3.存储自定义:
数据: seqyd元数据文件: aGVsbG8saGl2ZQ== aGVsbG8sd29ybGQ= aGVsbG8saGFkb29w seqyd文件为base64编码后的内容,decode后数据为:
##hello,hive
##hello,world
##hello,hadoop
create table cus(str STRING)
stored as
inputformat ‘org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextInputFormat‘
outputformat ‘org.apache.hadoop.hive.contrib.fileformat.base64.Base64TextOutputFormat‘;
LOAD DATA LOCAL INPATH ‘/home/cus‘ INTO TABLE cus;
通常是使用 defaultCodec + rcfile搭配效率最好

原文地址:https://blog.51cto.com/14256902/2424908

时间: 2024-10-09 09:33:12

好程序员大数据学习路线之hive存储格式的相关文章

好程序员大数据学习路线之hive表的查询

好程序员大数据学习路线之hive表的查询 1.join 查询 1.永远是小结果集驱动大结果集(小表驱动大表,小表放在左表). 2.尽量不要使用join,但是join是难以避免的. left join . left outer join . left semi join(左半开连接,只显示左表信息) hive在0.8版本以后开始支持left join left join 和 left outer join 效果差不多 hive的join中的on只能跟等值连接 "=",不能跟< &g

好程序员大数据学习路线分享hive的运行方式

好程序员大数据学习路线分享hive的运行方式,hive的属性设置: 1.在cli端设置 (只针对当前的session) 3.在java代码中设置 (当前连接) 2.在配置文件中设置 (所有session有效) 设置属性的优先级依次降低. cli端只能设置非hive启动需要的属性.(log属性,元数据连接属性) 查找所有属性: hive>set; 查看当前属性的值:通常是hadoop hive> set -v; 模糊查找属性: hive -S -e "set" | grep

好程序员大数据学习路线hive内部函数

好程序员大数据学习路线hive内部函数,持续为大家更新了大数据学习路线,希望对正在学习大数据的小伙伴有所帮助.1.取随机数函数:rand()语法: rand(),rand(int seed) 返回值: double 说明: 返回一个0到1范围内的随机数.如果指定seed,则会得到一个稳定的随机数序列select rand();select rand(10);2.分割字符串函数:split(str,splitor) 语法: split(string str, string pat) 返回值: ar

好程序员大数据学习路线分享高阶函数

好程序员大数据学习路线分享高阶函数,我们通常将可以做为参数传递到方法中的表达式叫做函数 高阶函数包含:作为值的函数.匿名函数.闭包.柯里化等等. 定义函数时格式:val 变量名 =?(输入参数类型和个数)?=>?函数实现和返回值类型和个数 "="表示将函数赋给一个变量 "=>"左面表示输入参数名称.类型和个数,右边表示函数的实现和返回值类型和参数个数 作为值的函数 定义函数 scala> val func = (x:Int) => x * x

好程序员大数据学习路线分享MAPREDUCE

好程序员大数据学习路线分享MAPREDUCE,需求:统计大量的文本文件中的单词出现的次数 1)整个运算需要分阶段 阶段一:并行局部运算 阶段二 :汇总处理,不同的阶段需要开发不同的程序 2)阶段之间的调用 3)业务程序(task程序)如何并发到集群并启动程序 4)如何监控task程序的运行状态,如何处理异常 ::这些问题是开发分布式程序都会面临的问题,完全可以封装成框架::MR 的结构 一个完整的MapReduce运行时有三类实例进程: 1)MRAppMaster : 负责整个程序的过程调度和状

好程序员大数据学习路线Hadoop学习干货分享

好程序员大数据学习路线Hadoop学习干货分享,Apache Hadoop 为可靠的,可扩展的分布式计算开发开源软件.Apache Hadoop软件库是一个框架,它允许使用简单的编程模型跨计算机群集分布式处理大型数据集(海量的数据).包括这些模块: Hadoop Common:支持其他Hadoop模块的常用工具. Hadoop分布式文件系统(HDFS?):一种分布式文件系统,可提供对应用程序数据的高吞吐量访问. Hadoop YARN:作业调度和集群资源管理的框架. Hadoop MapRedu

好程序员大数据学习路线分享Scala分支和循环

好程序员大数据学习路线分享Scala分支和循环3.3. 条件表达式表达式:一个具有执行结果的代码块.结果是具体的值或者() 表达式的思考方式:以表达式为中心的编程思想 1.表达式和语句的区别:表达式有返回值,语句被执行.表达式一般是一个语句块,执行后,返回一个值 2.不使用return语句,最后一个表达式即返回值 if/else表达式有值,这个值就是跟在if或者else之后的表达式的值 object ConditionDemo {def main(args: Array[String]){var

好程序员大数据学习路线分享Scala系列之集合操作函数

好程序员大数据学习路线继续为大家分享Scala系列之集合操作函数4.6 集合的重要函数4.6.1sum/max/min/count在序列中查找最大或最小值是一个极常见的需求,如下:val numbers = Seq(11, 2, 5, 1, 6, 3, 9) numbers.max //11 numbers.min //1 更高级的例子,其中包含一个书的序列case class Book(title: String, pages: Int) val books = Seq( Book("Futu

好程序员大数据学习路线分享Scala系列之泛型

好程序员大数据学习路线分享Scala系列之泛型,带有一个或多个类型参数的类是泛型的. 泛型类的定义: //带有类型参数A的类定义class Stack[A] {private var elements: List[A] = Nil//泛型方法def push(x: A) { elements = x :: elements }def peek: A = elements.headdef pop(): A = {val currentTop = peekelements = elements.ta