首页 > 其他分享 >hive表分区

hive表分区

时间:2024-01-25 17:56:27浏览次数:19  
标签:string 分区 Hive 分区表 hive user

为什么要使用分区表

默认情况下,Hive中的查询会扫描整个表来获取结果。

现在,考虑一个Hive表,它有数百万行。当一个简单的查询扫描该表时,它会消耗系统资源。而查询将花费大量时间来获取结果,这最终会影响hive应用程序的性能。

因此,在分析如此大的表时,我们需要一种技术来优化查询的性能,其中一种技术就是Hive中的PARTITIONED- 表分区。

分区表的意义在于优化查询。查询时尽量利用分区字段。如果不使用分区字段,就会全部扫描。

hive中如何对表进行分区

分区是Hive中的一种性能调优技术。它在Hive中使用一列或多列作为分区键在表中创建子目录。

例如,web日志按日期分区,一天是一个分区。查询时候,我们可以查询某一天或一段时间的数据,只读取该属性时间的数据,Hive只扫描指定分区的数据分区表,以实现高效查询。

分区表实际就是对应HDFS文件系统上的的独立的文件夹,该文件是夹下是该分区所有数据文件。

普通表和分区表的区别在于:一个Hive表在HDFS上是有一个对应的目录来存储数据,普通表的数据直接存储在这个目录下,而分区表数据存储时,是再划分子目录来存储的。一个分区一个子目录。主要作用是来优化查询性能。

创建分区表:

#时间分区
CREATE EXTERNAL TABLE user_info_test(
serial_number string,
user_name string,
user_age string)
PARTITIONED BY(
dt string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'hdfs://CMBHHA/apps/hive/datahouse/test/user_info_test';



#省市多分区
CREATE EXTERNAL TABLE user_info_test(
serial_number string,
user_name string,
user_age string)
PARTITIONED BY(
province_code string,
city_code string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.orc.OrcSerde'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'hdfs://CMBHHA/apps/hive/datahouse/test/user_info_test';

加载数据到hive分区

静态分区

在静态分区中,需要手工将数据插入到表的不同分区。

load data local inpath '/home/user1/emp.txt' overwrite into table t1 partition(provice = "hebei",city = "baoding");

动态分区

在数据插入到表中时会自动进行分区存放。

load data local inpath '/home/user1/emp.txt' overwrite into table t1 partition(provice,city);

动态分区默认是没有开启。可以通过执行以下命令开启动态分区。

hive> set hive.exec.dynamic.partition.mode=nonstrict       // 分区模式,默认strict		
hive> set hive.exec.dynamic.partition=true                 // 开启动态分区,默认false
hive> set hive.exec.max.dynamic.partitions=1000	           //最大动态分区数, 设为1000


标签:string,分区,Hive,分区表,hive,user
From: https://www.cnblogs.com/whiteY/p/17987800

相关文章

  • Hive - 窗口函数
       1、窗口函数分组,分组聚合,聚合开窗函数和排序开窗函数 createtablestudent_scores( idint, studentIdint, languageint, mathint, englishint, classIdstring, departmentIdstring ); idstudentIdlanguagemathenglishclassIddepartme......
  • 《Hive编程指南》读书笔记
    前言:最近刚接触写HiveSQL,却发现许多查询的执行速度远不如预期。为了提升查询效率,我去阅读了《Hive编程指南》,希望通过理解其底层机制来找到优化的方式,并为未来能编写出高效的SQL奠定基础。谨以此文做个记录。一、Hive因何而生先有Hadoop再有HiveHadoop实现了一个计算模型——......
  • Permission denied: user=hive, access=EXECUTE, inode=“/tmp“:root:supergroup:drw
    在执行Hadoop的创建目录、写数据等情况,可能会出现该异常,而在读文件的时候却不会报错,这主要是由于系统的用户名不同导致的,由于我们进行实际开发的时候都是用Windows操作系统,而编译后的JAVA程序是部署在Linux上的。而Windows的用户名一般都是自定义的或者是administrator,Linux的用户......
  • 启动hiveserver2
    (1)启动hiveserver2前台启动[atguigu@hadoop102hive]$bin/hiveserver2后台启动[atguigu@hadoop102hive]$nohupbin/hiveserver2>/dev/null2>&1& (1)启动hiveserver2[atguigu@hadoop102hive]$bin/hive--servicehiveserver2或者[atguigu@hadoop102hive]$......
  • 磁盘分区工具和挂载
    一、磁盘分区工具1、fdiskfdisk是一个常用的磁盘分区工具,在Linux系统中用于创建、编辑和删除磁盘分区。它可以帮助您对磁盘进行分区管理。常用命令列出所有磁盘:fdisk-l选择要分区的磁盘:fdisk/dev/sdX其中,/dev/sdX是要分区的磁盘名称(例如,/dev/sda)。查看帮助信......
  • mysql patition by--分区函数
    分区函数patitionbygroupby是分组函数,partitionby是分区函数partitionby并没有groupby的汇总功能。partitionby统计的每一条记录都存在,而groupby将所有的记录汇总成一条记录(类似于distinctEmpDepartment去重)相同点:groupby后的聚合函数,partionby后的orderby......
  • kettle从入门到精通 第三十三课 再谈 kettle 表输出 分区/分片
    1、之前第九章有讲过kettle表输出步骤,里面有简单的提到过表输出步骤里面的表分区设置,这里详细介绍下。 表分区数据:选择此选项可根据“分区”字段中指定的日期字段的值将数据拆分到多个表中。选择此选项后,数据将插入到表中,这些表的名称遵循<targettable>_<dateformat>模式,如t......
  • hivesql报错:java.net.SocketTimeoutException: Read timed out
    场景:在dolphin里面执行hivesql脚本,报错java.net.SocketTimeoutException:Readtimedout解决方式:hive.metastore.client.socket.timeout=1000s 扩展:"Hive报Readtimedout"错误可能也与YARN的资源限制有关。可以通过增加YARN的配置参数来解决此错误。<property><name......
  • 如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区 2024.01.22
     如何备份已经安装并设置AutoHotkey脚本编程环境的Windows电脑系统分区2024.01.22第1步:邮购并制作银灿IS903可启动U盘,量产Emulation-CD-ROM所用ISO镜像选用从www.firpe.cn下载的PE光盘镜像。第2步:正确安装电脑软件并调整电脑各项设置备份硬盘分区表和启动扇区信息转移个......
  • Oracle Partition 分区详细总结
    选中sql得表名,右键查看,可以观察到tab页最后一项有个“分区”的字样。增加分区相当于在sql中增加过滤条件。类似partitionby函数groupby是分组函数,partitionby是分区函数(像sum()等是聚合函数),注意区分。表空间如下所示点击查看代码partitionbylist(PROD_NUM)(partitio......