外部表

第4章 DDL数据定义

瘦欲@ 提交于 2019-11-29 07:06:38
第 4 章 DDL 数据定义 4.1 创建数据库 1 )创建一个数据库,数据库在 HDFS 上的默认存储路径是 /user/hive/warehouse/*.db 。 hive (default)> create database db_hive; 2 )避免要创建的数据库已经存在错误,增加 if not exists 判断。(标准写法) hive (default)> create database db_hive; FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. Database db_hive already exists hive (default)> create database if not exists db_hive; 3 )创建一个数据库,指定数据库在 HDFS 上存放的位置 hive (default)> create database db_hive2 location '/db_hive2.db'; 4.2 查询数据库 4.2.1 显示数据库   1 .显示数据库 hive> show databases;   2 .过滤显示查询的数据库 hive> show databases like 'db_hive*'; OK db_hive

hive小知识

亡梦爱人 提交于 2019-11-29 06:32:27
(一)内部表&外部表 未被external修饰的是内部表(managed table),被external修饰的为外部表(external table); 区别: 内部表数据由Hive自身管理,外部表数据由HDFS管理; 内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部表数据的存储位置由自己制定; 删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS上的文件并不会被删除; 对内部表的修改会将修改直接同步给元数据,而对外部表的表结构和分区进行修改,则需要修复(MSCK REPAIR TABLE table_name;) (二)分区和分桶 分区和分桶的层级关系:若特别大就需要分区,若分区后还觉得大就分桶; 分区针对的是数据的存储路径;分桶针对的是数据文件。 (1)分区: 分区表实际上就是对应一个 HDFS 文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。 Hive 中的分区就是分目录 ,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过 WHERE 子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。 来源: https://www.cnblogs.com/837634902why/p/11460136.html

Hive基于Hbase的外部表使用

随声附和 提交于 2019-11-29 06:29:32
官网:https://cwiki.apache.org/confluence/display/Hive/HBaseIntegration 作用 Hive直接使用Hbase的数据,不过hbase一般不适合分析数据,一般使用外部表将hbase数据导入其它hive表,用于数据分析 步骤 一、下载依赖jar 从 https://mvnrepository.com/artifact/org.apache.hive/hive-hbase-handler 下载自己对应版本,版本号和hbase版本保持一致。 将jar加入hive的lib中,如果是使用的CDH一般已经配置好依赖,可直接创建表 二、创建外部表 CREATE EXTERNAL TABLE hbase_external_db . test ( key string , ` id_card ` varchar ( 100 ) comment '身份证号' , ` mobile ` varchar ( 100 ) comment '手机号码' , ) comment 'xxx' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( "hbase.columns.mapping" = "history:id_card,history

mysql迁移mpp数据库Greenplum

拟墨画扇 提交于 2019-11-29 04:13:07
1. 场景描述 因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水。 2.解决方案 初步的想法是:因为mysql和postgresql(Greenplum建立在postgresql之上,i'm 软件老王)都是使用的标准sql,直接把mysql的建表语句在Greenplum建一边,把数据导入过来测试一下就行了,应该半天内就能搞定。 2.1 Greenplum建表 将mysql的表结构通过navicat for mysql导出(navivat中只导出表结构,如下图),但是发现导出的结构在 Greenplum中执行不了,mysql中的ddl语句: `CONFIG_ID` varchar(36) COLLATE utf8_unicode_ci NOT NULL COMMENT '软件老王' 解决办法 (1)网上找了mysql转postgresql的java代码,写的不是太全面,改了几次还是有点问题,放弃。 (2)问了下dba,用的Navicat Premium 12 可以转,网址: https://www.navicat.com.cn/ Navicat Premium可以同时操作多个数据库,包括:mysql和greenplum(postgresql)

PostgreSQL的外部表使用

有些话、适合烂在心里 提交于 2019-11-28 10:45:31
postgresql从9.1开始增加了外部表访问的功能,这个功能就是数据库直接读取数据库以外的文件,比如csv或者text等类型的文件,暂时不支持DML。postgresql有各种插件能直连各种异构DB,如oracle_fdw,mysql_fdw,file_fdw等,对数据的迁移是很方便的,这是PG的扩展性较强的一个表现。这里介绍foreign data wrapper的file_fdw使用。 一、环境: OS :CentOS 6.3 DB :PostgreSQL 9.3 二、使用过程 1.创建扩展,因为默认不安装,安装需要手工创建 [postgres@kenyon ~]$ psql psql (9.3.0) Type "help" for help. postgres=# CREATE EXTENSION file_fdw; CREATE EXTENSION postgres=# \dx List of installed extensions Name | Version | Schema | Description ----------+---------+------------+------------------------------------------- file_fdw | 1.0 | public | foreign-data wrapper for

Hive 表操作(HIVE的数据存储、数据库、表、分区、分桶)

本秂侑毒 提交于 2019-11-28 08:28:07
1、 Hive的数据存储 Hive的数据存储基于Hadoop HDFS Hive没有专门的数据存储格式 存储结构主要包括:数据库、文件、表、试图 Hive默认可以直接加载文本文件(TextFile),还支持sequence file 创建表时,指定 Hive数据的列分隔符与行分隔符,Hive即可解析数据。 2、 Hive的数据模型-数据库 类似传统数据库的 DataBase 默认数据库 "default" 使用 #hive命令后,不使用hive>use <数据库名>,系统默认的数据库。可以显式使用hive> use default; 创建一个新数据库 hive > create database test_dw; 3、 Hive的数据模型-表 Table 内部表 与数据库中的 Table 在概念上是类似 每一个 Table 在 Hive 中都有一个相应的目录存储数据。例如,一个表 test,它在 HDFS 中的路径为:$HIVE_HOME/warehouse/test。warehouse是在 hive-site.xml 中由 ${hive.metastore.warehouse.dir} 指定的数据仓库的目录 所有的 Table 数据(不包括 External Table)都保存在这个目录中。 内部表,删除表时,元数据与数据都会被删除 具体操作如下: 创建数据文件 inner

hive知识点总结

时间秒杀一切 提交于 2019-11-27 20:38:52
hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 Metastore (hive元数据) Hive将元数据存储在数据库中,比如mysql ,derby.Hive中的元数据包括表的名称,表的列和分区及其属性,表的数据所在的目录 Hive数据存储在HDFS,大部分的查询、计算由mapreduce完成 Hive数据仓库于数据库的异同 (1)由于Hive采用了SQL的查询语言HQL,因此很容易将Hive理解为数据库。其实从结构上来看,Hive和数据库除了拥有类似的查询语言, 再无类似之处。 (2)数据存储位置。 hdfs raw local fs (3)数据格式。 分隔符 (4)数据更新。hive读多写少。Hive中不支持对数据的改写和添加,所有的数据都是在加载的时候中确定好的。 INSERT INTO … VALUES添加数据,使用UPDATE … SET修改数据 不支持的 HDFS 一次写入多次读取 (5) 执行。hive通过MapReduce来实现的 而数据库通常有自己的执行引擎。 (6)执行延迟。由于没有索引,需要扫描整个表,因此延迟较高。另外一个导致Hive执行延迟高的因素是MapReduce框架 (7)可扩展性 (8)数据规模。 hive几种基本表类型

Hive SQL之分区表与分桶表

牧云@^-^@ 提交于 2019-11-27 18:15:46
  Hive sql是Hive 用户使用Hive的主要工具。Hive SQL是类似于ANSI SQL标准的SQL语言,但是两者有不完全相同。Hive SQL和Mysql的SQL方言最为接近,但是两者之间也存在着显著的差异,比如Hive不支持行级数据的插入、更新和删除,也不支持事务操作。    注: HIVE 2.*版本之后开始支持事务功能,以及对单条数据的插入更新等操作 Hive的相关概念 Hive数据库       Hive中的数据库从本质上来说仅仅就是一个目录或者命名空间,但是对于具有很多用户和组的集群来说,这个概念非常有用。首先,这样可以避免表命名冲突;其次,它等同于与关系型数据库中数据库的概念,是一组表或者表的逻辑组,非常容易理解 Hive表      Hive中的表和关系型数据库中table概念是类似的,每个table在Hive中都有一个相应的目录存储数据。如果说,你没有指定表的数据库,那么Hive会通过{HIVE_HOME}/conf/hive_site.xml配置文件中的hive.metastore.warehouse.dir属性来使用默认值(一般是/usr/hive/warehouse,也可以根据实际情况来进行修改该配置),所有的table都保存在这个目录中。     Hive中的表分为两类,分别为 内部表 和 外部表 内部表(managed table)     

Hive学习之路 (一)Hive初识

流过昼夜 提交于 2019-11-27 10:20:41
目录 Hive 简介 什么是Hive 为什么使用 Hive Hive 特点 Hive 和 RDBMS 的对比 Hive的架构 1、用户接口: shell/CLI, jdbc/odbc, webui Command Line Interface 2、跨语言服务 : thrift server 提供了一种能力,让用户可以使用多种不同的语言来操纵hive 3、底层的Driver: 驱动器Driver,编译器Compiler,优化器Optimizer,执行器Executor 4、元数据存储系统 : RDBMS MySQL 执行流程 Hive的数据组织 正文 Hive 简介 什么是Hive 1、Hive 由 Facebook 实现并开源 2、是基于 Hadoop 的一个数据仓库工具 3、可以将结构化的数据映射为一张数据库表 4、并提供 HQL(Hive SQL)查询功能 5、底层数据是存储在 HDFS 上 6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行 7、使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。   数据仓库之父比尔·恩门(Bill Inmon)在 1991 年出版的“Building the Data Warehouse”(《建 立数据仓库》)一书中所提出的定义被广泛接受—

Hive笔记4

坚强是说给别人听的谎言 提交于 2019-11-26 23:14:56
DDL数据定义 创建数据库 1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。 2)避免要创建的数据库已经存在错误,增加if not exists判断。(标准写法) create database if not exists db_hive; 3)创建一个数据库,指定数据库在HDFS上存放的位置 create database db_hive2 location '/db_hive2.db'; 4.2查询数据库 4.2.1 显示数据库 - 1.显示数据库 show databases -2. 显示数据库详细信息,extended create database extended db_hive; 4.3.3 切换当前数据库use use db_hive; 修改数据库 用户可以使用ALTER DATABASE命令为某个数据库的DBPROPERTIES 设置键-值对属性值,来描述这个数据库的属性信息。数据库的其他数据信息都是不可更改的,包括数据库名和数据库所在的目录位置 alter database db_hive set dbproperties('createtime' = '20170830'); 在Hive中查询修改结果 desc database extended db_hive; 删除数据库 1.删除数据库 drop