集团官网
  • 国家级全民数字素养与技能培训基地
  • 河南省第一批产教融合型企业建设培育单位
  • 郑州市数字技能人才(码农)培养评价联盟

Hive中怎样创建内部数据表和外部数据表?

编辑:ayx爱游戏体育(中国)官方网站官方数据 日期:2023-03-02 17:41

数据表是存储数据的基本单位,Hive数据表主要分为内部表(又叫托管表)和外部表,以内部表和外部表为基础可以创建分区表或分桶表,即内/外部分区表或内/外部分桶表。接下来,针对内部表和外部表进行详细讲解。

默认情况下,内部表和外部表的数据都存储在Hive配置文件中参数hive.metastore.warehouse.dir指定的路径。它们的区别在于删除内部表时,内部表的元数据和数据会一同删除;而删除外部表时,只删除外部表的元数据,不会删除数据。外部表相对来说更加安全,数据组织更加灵活并且方便共享源数据文件。

CREATE TABLE IF NOT EXISTShive_database.managed_table(staff_id INT COMMENT "This is staffid",staff_name STRING COMMENT "This is staffname",salary FLOAT COMMENT "This is staff salary",hobby ARRAY CONMENT "This is staff hobby",deduct(hps MAP COMMENT "This is staff deduction",address STRUCT COMMENT "This is staff address")ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','COLLECTION ITEMS TERMINATED BYMAP KEYS TERMINMTED BY  ':'LINES TERMINATED BY '\n'STORED AS textfileTBLPROPERTIES("comment"="This is a managed table");

上述命令中,指定ROW FORMAT DELIMITED子句使用Hive内置的Serde,自定义字段(FIELDS)分隔符为“,”;自定义集合元素(COLLECTION ITEMS)的分隔符为“_”;自定义MAP(MAP KEYS)的键值对分隔符为“:”;自定义行(LINES)分隔符为\n。

(2)创建外部表external_table的命令如下。

CREATE TABLE IF NOT EXISTShive_database.managed_table(staff_id INT COMMENT "This is staffid",staff_name STRING COMMENT "This is staffname",salary FLOAT COMMENT "This is staff salary",hobby ARRAY CONMENT "This is staff hobby",deduct(hps MAP COMMENT "This is staff deduction",address STRUCT COMMENT "This is staff address")ROW FORMAT DELIMITEDFIELDS TERMINATED BY ','COLLECTION ITEMS TERMINATED BYMAP KEYS TERMINMTED BY  ':'LINES TERMINATED BY '\n'STORED AS textfileTBLPROPERTIES("comment"="This is a managed table");

上述命令中,通过在CREATETABLE句式中指定EXTERNAL子句创建外部表。创建外部表时通常配合LOCATION子句指定数据的存储位置,便于数据的维护与管理。

相关内容

抢先一步 鸿蒙(HarmonyOS)应用开发者高级认证 免费考! 适合人群计算机相关专业在校生(技师、中职、高职、本科、研究生)对鸿蒙(HarmonyOS)有兴趣的非计算机相关专业在校生目前正在从事移动应用的开发者目前正在从事计算机行业相关的人计算机专业高校老师所有对鸿蒙(HarmonyOS)有兴趣的人 培训方案掌握鸿蒙的核心概念和端云一体化开发、... 什么是Java的多态性(polymorphism)?它有哪些不同的形式? 多态性是Java面向对象编程的一个重要概念,它允许不同的对象以一致的方式响应同一个方法调用,具体表现为对象在运行时可以表现出多个不同的形态。多态性主要有两种不同的形式:编译时多态性(静态多态性)和运行时多态性(动态多态性)。1. 编译时多态性(静态多态性):   ... 如何学习和搭建Hadoop开发环境? Hadoop是大数据处理领域的重要平台,能够处理和分析大量数据。为了有效地利用Hadoop,我们需要学习其基础知识,并正确搭建开发环境。下面是详细的学习和搭建指南。一、学习Hadoop基础掌握基础概念和原理Hadoop主要由HDFS和MapReduce两部分组成。HDFS是分布式文件系统,Ma... UI 设计学习如何进阶成为高手 我总结了六种方法,帮助你走出舒适区,提高技能,成长为自信且经验丰富的UI设计高手一位经验丰富的 UI 设计师,往往十分看中应用程序界面的吸引力和视觉刺激,确保满足用户期望和需求。但是,如果你已经在 UI 设计圈摸爬滚打多年,仍然没有出色的作品,那你极有可能是因为陷入了一个舒适圈,UI技能一直原... 在Java中Executor和Executors的区别? 在Java中,Executor和Executors都与线程池和并发执行有关,但它们是不同的概念和类。1.ExecutorExecutor是一个接口,位于java.util.concurrent包中,用于表示一个执行任务的执行器。它只定义了一个方法:void execute(Runnable c... String类型的常见命令有哪些? String类型,也就是字符串类型,是Redis中最简单的存储类型。其value是字符串,不过根据字符串的格式不同,又可以分为3类:string是普通字符串,int整数类型,可以做自增、自减操作,float浮点类型,可以做自增、自减操作。String的常见命令有:SET:添加或者修改已经存在的...