好程序员大数据培训开发之掌握Hive的静态分区与动态分区

本文涉及的产品
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介:   **好程序员**大数据培训的终极目标是将你培养成一名“复合型”研发人才,让你自己在掌握相关大数据技术的同时,也能够赢得一份高薪职位!好程序员大数据开发采用“T”字形的思维,以大数据的深度为主,以机器学习、云计算等作为宽度,相辅相成。

  分区是hive存放数据的一种方式。将列值作为目录来存放数据,就是一个分区。这样查询时使用分区列进行过滤,只需根据列值直接扫描对应目录下的数据,不扫描其他不关心的分区,快速定位,提高查询效率。分动态和静态分区两种:

  1.静态分区:若分区的值是确定的,那么称为静态分区。新增分区或者是加载分区数据时,已经指定分区名。

  createtableifnotexistsday_part1(

  uidint,

  unamestring

  )

  partitionedby(yearint,monthint)

  rowformatdelimitedfieldsterminatedby''

  ;

  ##加载数据指定分区

  loaddatalocalinpath'/root/Desktop/student.txt'intotableday_part1partition(year=2017,month=04);

  ##新增分区指定分区名

  altertableday_part1addpartition(year=2017,month=1)partition(year=2016,month=12);

  2.动态分区:分区的值是非确定的,由输入数据来确定

  2.1动态分区的相关属性:

  hive.exec.dynamic.partition=true:是否允许动态分区

  hive.exec.dynamic.partition.mode=strict:分区模式设置

  strict:最少需要有一个是静态分区

  nostrict:可以全部是动态分区

  hive.exec.max.dynamic.partitions=1000:允许动态分区的最大数量

  hive.exec.max.dynamic.partitions.pernode=100:单个节点上的mapper/reducer允许创建的最大分区

  2.2动态分区的操作

  ##创建临时表

  createtableifnotexiststmp(

  uidint,

  commentidbigint,

  recommentidbigint,

  yearint,

  monthint,

  dayint

  )

  rowformatdelimitedfieldsterminatedby'';

  ##加载数据

  loaddatalocalinpath'/root/Desktop/comm'intotabletmp;

  ##创建动态分区表

  createtableifnotexistsdyp1(

  uidint,

  commentidbigint,

  recommentidbigint

  )

  partitionedby(yearint,monthint,dayint)

  rowformatdelimitedfieldsterminatedby''

  ;

  ##严格模式

  insertintotabledyp1partition(year=2016,month,day)

  selectuid,commentid,recommentid,month,dayfromtmp;

  ##非严格模式

  ##设置非严格模式动态分区

  sethive.exec.dynamic.partition.mode=nostrict;

  ##创建动态分区表

  createtableifnotexistsdyp2(

  uidint,

  commentidbigint,

  recommentidbigint

  )

  partitionedby(yearint,monthint,dayint)

  rowformatdelimitedfieldsterminatedby'';

  ##为非严格模式动态分区加载数据

  insertintotabledyp2partition(year,month,day)

  selectuid,commentid,recommentid,year,month,dayfromtmp;

  3.分区注意细节

  (1)、尽量不要是用动态分区,因为动态分区的时候,将会为每一个分区分配reducer数量,当分区数量多的时候,reducer数量将会增加,对服务器是一种灾难。

  (2)、动态分区和静态分区的区别,静态分区不管有没有数据都将会创建该分区,动态分区是有结果集将创建,否则不创建。

  (3)、hive动态分区的严格模式和hive提供的hive.mapred.mode的严格模式。

  hive提供我们一个严格模式:为了阻止用户不小心提交恶意hql

  hive.mapred.mode=nostrict:strict

  如果该模式值为strict,将会阻止以下三种查询:

  (1)、对分区表查询,where中过滤字段不是分区字段。

  (2)、笛卡尔积join查询,join查询语句,不带on条件或者where条件。

  (3)、对orderby查询,有orderby的查询不带limit语句。

  好程序员大数据培训的终极目标是将你培养成一名“复合型”研发人才,让你自己在掌握相关大数据技术的同时,也能够赢得一份高薪职位!好程序员大数据开发采用“T”字形的思维,以大数据的深度为主,以机器学习、云计算等作为宽度,相辅相成。此外好程序员大数据课程定期组织与一线名企的工程师进行面对面的就企业当下的项目讨论与研发,进而验证所学技术的正确方向。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
4月前
|
SQL 分布式计算 DataWorks
DataWorks产品使用合集之如何开发ODPS Spark任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
2月前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
67 0
|
3月前
|
SQL JavaScript 前端开发
用Java、Python来开发Hive应用
用Java、Python来开发Hive应用
40 7
|
3月前
|
SQL JavaScript 前端开发
用Java来开发Hive应用
用Java来开发Hive应用
42 7
|
4月前
|
SQL 存储 HIVE
hive分区与分桶
hive分区与分桶
69 1
|
3月前
|
SQL 分布式计算 大数据
代码编码原则和规范大数据开发
此文档详细规定了SQL代码的编写规范,包括代码的清晰度,执行效率,以及注释的必要性。它强调所有SQL关键字需统一使用大写或小写,并禁止使用select *操作。此外,还规定了代码头部的信息模板,字段排列方式,INSERT, SELECT子句的格式,运算符的使用,CASE语句编写规则,查询嵌套规范,表别名定义,以及SQL注释的添加方法。这些规则有助于提升代码的可读性和可维护性。
68 0
|
3月前
|
SQL 分布式计算 大数据
大数据开发SQL代码编码原则和规范
这段SQL编码原则强调代码的功能完整性、清晰度、执行效率及可读性,通过统一关键词大小写、缩进量以及禁止使用模糊操作如select *等手段提升代码质量。此外,SQL编码规范还详细规定了代码头部信息、字段与子句排列、运算符前后间隔、CASE语句编写、查询嵌套、表别名定义以及SQL注释的具体要求,确保代码的一致性和维护性。
113 0
|
5月前
|
SQL 分布式计算 MaxCompute
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
SQL开发问题之对于ODPS中的UNION操作,执行计划的问题如何解决
|
5月前
|
存储 分布式计算 MaxCompute
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
构建NLP 开发问题之如何支持其他存储介质(如 HDFS、ODPS Volumn)在 transformers 框架中
|
4月前
|
数据可视化
Echarts数据可视化开发| 智慧数据平台
Echarts数据可视化开发| 智慧数据平台