开一家网站建设公司代码添加在网站的什么位置

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

开一家网站建设公司,代码添加在网站的什么位置,企业网站建设及推广研究,成都seo专家一、分区表和分桶表1.1 分区表partitionhive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录#xff0c;每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择式选择查询所需要的分区#xff0c;这样的查询效率辉提高很多。1.1.1 分区表基本语…一、分区表和分桶表1.1 分区表partitionhive中的分区就是把一张大表的数据按照业务需要分散的存储到多个目录每个目录就称为该表的一个分区。在查询时通过where子句中的表达式选择式选择查询所需要的分区这样的查询效率辉提高很多。1.1.1 分区表基本语法a. 创建分区表create table dept_partition(deptno int,dname string,loc string )partitioned by (day string)row format delimited fields terminated by \tlines terminated by \n;b. 分区表读写数据写数据–loadload data local inpath /opt/stufile/dept_20230225.log into table dept_partition partition (day20230225)写数据–insertinsert overwrite table dept_partition partition (day20230226) select deptno,dname,loc from dept_partition where day20230225;读数据查询分区表数据时可以将分区字段看作表的伪劣可像使用其他字段一样使用分区字段。select deptno,dname,loc,day from dept_partition where day2020-04-01c. 分区表基本操作查看所有分区信息show prtitions dept_partition;增加分区创建单个分区 alter table dept_partition add partition(day20220403);同时创建多个分区分区之间不能有逗号 alter table dept_partition add partition(day20220404) partition(day20220405);删除分区删除单个分区 alter table dept_partition drop partition(day20220403);同时删除多个分区分区之间必须有逗号 alter table dept_partition drop partition(day20220404), partition(day20220405);d. 修复分区Hive 将分区表的所有分区信息都保存在了元数据中只有元数据与 HDFS 上的分区路径一致时分区表才能正常读写数据。若用户手动创建/删除分区路径Hive 都是感知不到的这样就会导致 Hive 的元数据和 HDFS 的分区路不一致。再比如若分区表为外部表用户执行 drop partition 命令后分区元数据会被删除而 HDFS 的分区路径不会被删除同样会导致 Hive 的元数据和 HDFS 的分区路径不一致。若出现元数据和 HDFS 路径不一致的情况可通过如下几种手段进行修复 add partition若手动创建HDFS 的分区路径Hive 无法识别可通过add partition 命令增加分区元数据信息从而使元数据和分区路径保持一致。 drop partition若手动删除 HDFS 的分区路径Hive 无法识别可通过 drop partition 命令删除分区元数据信息从而使元数据和分区路径保持一致。 msck若分区元数据和 HDFS 的分区路径不一致还可使用 msck 命令进行修复。msck repair table table_name [add/drop/sync partitions];1.1.2 二级分区表 如果一天内的日志数据量也很大可以创建二级分区表例如可以在按天分区的基础上再对每天的数据按小时进行分区。二级分区表建表语句create create table dept partition2(dleptno int,dnamne string,,loc string partitioned by (day string, hour string) row format delimited fields terminated by \t;数据装载语句load data local inpath /opt/stufile/dept_20220401.log into table dept_partition partition (day20220401, hour12);查询分区数据select * from dept_partition2 where day20220401 and hour12;1.1.3 动态分区动态分区是指向分区表 insert 数据时被写往的分区不由用户指定而是由每行数据的最后一个宁段的值来动态的决定。使用动态分区可只用一个 insert 语句将数据写入多个分区。动态分区相关参数1. 动态分区功能总开关(默认 true开启) set hive.exec.dynamic.partitiontrue2. 严格模式和非严格模式

  • 动态分区的模式默认 strict(严格模式)要求必须指定至少一个分区为静态分区,
  • nonstrict(非严格模式) 允许所有的分区字段都使用动态分区。 set hive.exec.dynamic.partition.modenonstrict3. 一条 insert 语句可同时创建的最大的分区个数默认为 1000。 set hive.exec.max.dynamic.partitions10004. 单个 Mapper 或者 Reducer 可同时创建的最大的分区个数默认为 100。 set hive.exec.max.dynamic.partitions.pernode1005. 一条 insert 语句可以建的最大的文件个数默认 100000 hive.exec.max.created.files1000006. 当查询结果为空时且进行动态分区时是否抛出异常默认 false。 hive.error.on.empty.partitionfalse1.2 分桶表bucket分区提供一个隔离数据和优化查询的便利方式。不过并非所有的数据集都可形成合理的分区。对于一张表或者分区Hive 可以进一步组织成桶也就是更为细粒度的数据范围划分分区针对的是数据的存储路径分桶针对的是数据文件。分桶表的基本原理是首先为每行数据计算一个指定字段的数据的 hash 值然后模以·个指定的分桶数最后将取模运算结果相同的行写入同一个文件中这个文件就称为一个分桶(bucket)。1.2.1 分桶表基本语法建表语句create table stu buck(id int,name string ) clustered by(id) into 4 buckets row format delimited fields terminated by \t;数据装载load data local inpath /opt/module/hive/datas/student.txt into table stu_buck;1.2.2 分桶排序表建表语句create table stu buck(id int,name string ) clustered by(id) sorted by(id) into 4 buckets row format delimited fields terminated by \t;数据装载load data local inpath /opt/module/hive/datas/student.txt into table stu_buck_sort;二、文件格式和压缩2.1hive文件格式为 Hive 表中的数据选择一个合适的文件格式对提高查询性能的提高是十分有益的。Hive 表数据的存储格式可以选择 text file、orc、parquet、sequence file 等。2.1.1 Text File文本文件是 Hive 默认使用的文件格式文本文件中的一行内容就对应 Hive 表中的行记录。可通过以下建表语句指定文件格式为文本文件:create table textfile_table (column specs) stored as textfile;2.1.2 ORCORC (Optimized Row Columnar) file format 是 Hive 0.11版里引入的一种列式存储的文件格式。ORC文件能够提高 Hive 读写数据和处理数据的性能。与列式存储相对的是行式存储下图是两者的对比行存储的特点查询满足条件的一整行数据的时候列存储则需要去每个聚集的字段找到对应的每个列的值行存储只需要找到其中一个值其余的值都在相邻地方所以此时行存储查询的速度更快。列存储的特点因为每个字段的数据聚集存储在查询只需要少数几个字段的时候能大大减少读取的数据量每个字段的数据类型一定是相同的列式存储可以针对性的设计更好的设计压缩算法。前文提到的 text file 和 sequence file 都是基于行存储的orc 和 parquet 是基于列式存储的。每个Orc 文件由 Header、Body 和 Tail 三部分组成。其中Header内容为ORC用于表示文件类型。Body由1个或多个 stripe 组成每个 stripe 一般为 HDFS 的块大小每一个 stripe 包含多条记录这些记录按照列进行独立存储每个 stripe 里有三部分组成分别是 index Data Row DataStripe Footere。index Data一个轻量级的 index默认是为各列每隔 1w 行做一个索引。每个索引会Index Data:记录第n万行的位置和最近一万行的最大值和最小值等信息。Row Data存的是具体的数据按列进行存储并对每个列进行编码分成多个Stream 来存储。Stripe Footer存放的是各个Stream 的位置以及各 column 的编码信息。Tail 由File Footer PostScript 组成。File Footer 中保存了各 Stripe 的其实位置、索引长度、数据长度等信息各 Column 的统计信息等PostScript 记录了整个文件的压缩类型以及Fle Footer 的长度信息等。在读取ORC 文件时会先从最后一个字节读取 PostScript 长度进而读取到 PostScript,从里面解析到 File Footer 长度进而读取 FileFooter从中解析到各个Stripe信息再读各个stripe即从后往前读。建表语句create table orc table (column specs) stored as orc tblproperties (property_nameproperty value, …) ;ORC文件格式支持的参数如下参数默认值说明orc.compressZLIB压缩格式可选项NONE、ZLIB、SNAPPYorc.compress.size262,144每个压缩快的大小ORC文件是分块压缩的orc.tripe.size67,108,864每个stripe的大小orc.row.index.stride10,000索引步长每隔多少行数据建一条索引2.13 ParqustParquet 文件是 Hadoop 生态中的一个通用的文件格式它也是一个列式存储的文件格式。建表语句create table parquet_table (column specs) stored as parcuet tbproperties (property_namepropertu_value, …);支持的参数如下参数默认值说明parquet.compressionuncompressed压缩格式可选项uncompressedsnappygziplzobrotlilz4parquet.block.size134217728行组大小通常与HDFS块大小保持一致parquet.page.size1048576页大小2.2 压缩在 Hive 表中和计算过程中保持数据的压缩对磁盘空间的有效利用和提高查询性能都是十分有益的。2.2.1 hive表数据进行压缩在 Hive 中不同文什类型的表声明数据压缩的方式是不同的。TextFile若一张表的文件类型为 TextFile若需要对该表中的数据进行压缩多数情况下无需在建表语句做出声明。直接将压缩后的文件导入到该表即可Hive 在查询表中数据时可自动识别其压缩格式进行解压。需要注意的是在执行往表中导入数据的 SQL 语句时用户需设置以下参数来保证写入表中的数据是被压缩的。——SQL语句的最终输出结果是否压缩 set hive.exec.compress.outputtrue; ——输出结果的压缩格式 set mapreduce.output.fileoutputformat.compress.codecorg.apache.hadoop.io.compress.SnappyCodec;ORC若一张表的文件类型为 ORC若需要对该表数据进行压缩需在建表语句中声明压缩格式如下create table orc table (column specs) stored as orc tblproperties(orc.compresssnappy);Parquet若一张表的文件类型为 parquet若需要对该表数据进行压缩需在建表语句中声明压缩格式如下create table orc table (column specs) stored as parquet tblproperties(parquet.compresssnappy);2.2.2 计算过程中使用压缩单个MR的中间结果进行压缩单个MR 的中间结果是指 Mapper 输出的数据对其进行压缩可降低 shuffle 阶段的网络10可通过以下参数进行配置——开启MapReduce中间数据压缩功能 set mapreduce.map.output.compresstrue;——设置MapReduce中间数据的压缩方式 set mapreduce.map.output.codecorg.apache.hadoop.io.compress.SnappyCodec;单条SQL语句的中间结果进行压缩单条 SQL 语句的中间结果是指两个 MR(一条 SQL 语可能需要通过 MR 进行计算)之间的临时数据可通过以下参数进行配置——是否对两个MR 之间的临时数据进行压缩 set hive.exec.compress .intermediatetrue; ——压缩格式以下示例为 snappy set hive.intermediate.compression.codecorg.apache.hadoop.io.compress.SnappyCodec;