`
flyingdutchman
  • 浏览: 358466 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

深入学习《Programing Hive》:Hive的数据模型(表)

    博客分类:
  • Hive
阅读更多
        Hive的数据类型
        Hive的基本数据类型有:TINYINT,SAMLLINT,INT,BIGINT,BOOLEAN,FLOAT,DOUBLE,STRING,TIMESTAMP(V0.8.0+)和BINARY(V0.8.0+)。
        Hive的集合类型有:STRUCT,MAP和ARRAY。
       
        Hive主要有四种数据模型(即表):(内部)表、外部表、分区表和桶表。
        表的元数据保存传统的数据库的表中,当前hive只支持Derby和MySQL数据库。
        内部表:
        Hive中的表和传统数据库中的表在概念上是类似的,Hive的每个表都有自己的存储目录,除了外部表外,所有的表数据都存放在配置在hive-site.xml文件的${hive.metastore.warehouse.dir}/table_name目录下。
       
        CREATE TABLE IF NOT EXISTS students(user_no INT,name STRING,sex STRING,
                 grade STRING COMMOT '班级')COMMONT '学生表'
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
        STORE AS TEXTFILE;          
        

        外部表:
        外部表指向已经存在在Hadoop HDFS上的数据,除了在删除外部表时只删除元数据而不会删除表数据外,其他和内部表很像。
       
        CREATE EXTERNAL TABLE IF NOT EXISTS students(user_no INT,name STRING,sex STRING,
                 class STRING COMMOT '班级')COMMONT '学生表'
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
        STORE AS SEQUENCEFILE
        LOCATION '/usr/test/data/students.txt';            
        

        分区表:
        分区表的每一个分区都对应数据库中相应分区列的一个索引,但是其组织方式和传统的关系型数据库不同。在Hive中,分区表的每一个分区都对应表下的一个目录,所有的分区的数据都存储在对应的目录中。
        比如说,分区表partitinTable有包含nation(国家)、ds(日期)和city(城市)3个分区,其中nation = china,ds = 20130506,city = Shanghai则对应HDFS上的目录为:
               /datawarehouse/partitinTable/nation=china/city=Shanghai/ds=20130506/。
       
        CREATE TABLE IF NOT EXISTS students(user_no INT,name STRING,sex STRING,
                 class STRING COMMOT '班级')COMMONT '学生表'
        PARTITIONED BY (ds STRING,country STRING)
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
        STORE AS SEQUENCEFILE;            
        

        分区中定义的变量名不能和表中的列相同。
        桶区表:
        桶表就是对指定列进行哈希(hash)计算,然后会根据hash值进行切分数据,将具有不同hash值的数据写到每个桶对应的文件中。
       
        CREATE TABLE IF NOT EXISTS students(user_no INT,name STRING,sex STRING,
                 class STRING COMMOT '班级',score SMALLINT COMMOT '总分')COMMONT '学生表'
        PARTITIONED BY (ds STRING,country STRING)
        CLUSTERED BY(user_no) SORTED BY(score) INTO 32 BUCKETS
        ROW FORMAT DELIMITED
        FIELDS TERMINATED BY ','
        STORE AS SEQUENCEFILE;            
        


        内部表和外部表的主要区别:
        1)、内部表创建要2步:表创建和数据加载,这两个过程可以同步执行。在数据加载的过程中,数据数据会移动到数据仓库的目录中;外部表的创建只需要一个步骤,表创建数据加载同时完成,表数据不会移动。
        2)、删除内部表时,会将表数据和表的元数据一同删除;而删除外部表时,紧删除表的元数据而不会删除表数据。     
        
分享到:
评论

相关推荐

    HIVE编程指南

    HIVE编程指南中文版,是由programing hive翻译过来

    Hive编程中文版

    Hive编程指南中文版翻译,Hive programing

    Programing1:编程的最终评估1

    学习者可能需要读取和写入文件,例如,读取文本文件中的数据,处理后写回结果,或者将程序的输出以文件形式保存。理解文件流的概念和操作方法至关重要。 面向对象编程(OOP)的概念可能也会有所涉及,即使是在初级...

    hive-programing

    直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = http'-f demo.hql #this用于将txt文件存储在azure中 直线-u'jdbc:hive2:// headnodehost:10001 /; transportMode = ...

    Programing with MFC Programing with MFC

    《Programming with MFC》是关于Microsoft Foundation Classes (MFC) 的编程指南,MFC 是微软为Windows应用程序开发提供的...通过深入学习MFC,开发者可以更好地理解和控制Windows应用程序的生命周期,提高开发效率。

    leetcode手册JAVA-test-programing-:测试-编程-

    只要它可以帮助正在学习新算法的人,它是否从某个地方复制并不重要。 图形示例也将非常有帮助。 不要忘记包括测试。 不要删除以前的算法实现。 只需使用您自己的实现添加一个新文件。 美化和清理您的代码以便于阅读...

    集体智慧编程原书代码-programing collective intelligence

    8. 机器学习算法:包括监督学习(如支持向量机、决策树)、无监督学习(如聚类、主成分分析)以及强化学习等,用于模型训练和预测。 9. 实践应用:书中包含多个实际项目,如建立推荐引擎、预测股票价格等,让读者...

    c++ programing and c

    c++ programingc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ programing and cc++ ...

    Algorithm-competitive-programing.zip

    "Algorithm-competitive-programming.zip"这个压缩包文件,显然是为了帮助学习者深入理解和掌握算法以及如何在竞争编程中运用它们。让我们一起探讨其中蕴含的知识点。 1. **算法基础**:算法是一系列精确的步骤,...

    programing-GIS:代码和笔记本

    通过深入研究这个"programing-GIS:代码和笔记本",学习者不仅可以掌握GIS编程的基本技能,还能了解如何将这些技能应用于实际问题,比如城市规划、环境保护、交通分析等领域。这将是一个宝贵的学习资源,帮助开发者将...

    Python-programing:Python代码

    以上只是Python编程中的一些基础知识点,Python的生态庞大,还有更多高级特性和框架,如网络编程、并发处理、网络爬虫、机器学习、深度学习等,都需要进一步深入学习。Python-programing-main这个压缩包可能包含了...

    The C Programing language

    根据提供的文件信息,实际内容与要求的C编程语言知识点不符,该文件内容为一份小品剧本,因此将基于剧本中的元素进行无关内容的剔除,接下来将围绕...掌握这些基础概念对于学习更高级的语言和技术也是非常有帮助的。

    The c programing language

    《C Programming Language》是计算机编程领域的一本经典著作,由Brian W. Kernighan和Dennis M....通过深入学习《C Programming Language》,你可以建立起坚实的编程基础,为后续的编程学习打下坚实的基础。

    C++ programing language知识整理(rar)

    以下是对"C++ programing language"知识的详细整理: 1. **基础语法**:C++的基础语法与C语言类似,包括变量声明、数据类型(如int、float、char)、运算符、流程控制(如if-else、for、while、switch-case)等。 ...

    web-programing:belajar tentang membuat网站sederhana

    在本课程"web-programing: belajar tentang membuat网站sederhana"中,我们将探索构建简单网站的基本步骤,主要关注CSS这一关键技术。首先,我们需要理解网站的构成元素,包括HTML、CSS以及JavaScript,它们共同构成...

    C++ Programing 编程思想

    第2章 数据抽象 22 第3章 隐藏实现 42 第4章 初始化与清除 55 第5章 函数重载与缺省参数 69 第6章 输入输出流介绍 83 第7章 常量 124 第8章 内联函数 142 第9章 命名控制 157 第10章 引用和拷贝构造函数 176

Global site tag (gtag.js) - Google Analytics