外部表

性能调优7:多表连接 - join

三世轮回 提交于 2019-12-06 11:41:05
原文: 性能调优7:多表连接 - join 在产品环境中,往往存在着大量的表连接情景,不管是inner join、outer join、cross join和full join(逻辑连接符号),在内部都会转化为物理连接(Physical Join),SQL Server共有三种物理连接:Nested Loop(嵌套循环),Merge Join(合并连接)和Hash Join(哈希连接)。这三个物理连接的处理方式不同,分别应用在不同的场景中。 在同一时刻,表连接只能是两表(或者是数据集,也就是表的一部分)之间的连接,通常按照表处于Join操作的位置来区分,把Join操作符前面的表叫做左表,把Join操作符后面的表叫做右表。如果有n个表连接,那么必须进行n-1次关联操作,上一次关联操作的结果作为下一次关联操作的一个数据集。On子句用于设置连接条件,可以决定连接的顺序。 一,嵌套循环 嵌套循环是最基本的Join算法,分为两个循环,内部循环和外部循环,内部循环嵌套在外部循环内部。任何一个连接语句,都包含两个表,内部循环对应内部表,外部循环对应外部表。在图形执行计划中,上面的输入表是外部表,下面的输入表是内部表。 在嵌套循环中,外部循环逐行处理外部表,内部循环针对每一个外部行到内部表中进行查找,以找出所有匹配外部行的数据行。外部循环每输出一行,内部表中所有行都会和外部行进行匹配

Hive

回眸只為那壹抹淺笑 提交于 2019-12-05 22:17:50
Facebook为了解决海量日志数据的分析而开发了hive,后来开源给了Apache基金会组织。 hive是一种用SQL语句来协助读写、管理存储在HDFS上的大数据集的数据仓库软件。 Hive 特点 1 是基于 Hadoop 的一个数据仓库工具; 2 Hive 最大的特点是将 Hive SQL语句转换为 MapReduce、Tez 或者 spark 等任务执行,使得大数据分析更容易。 3 可以将结构化的数据映射为一张数据库表,库和表的元数据信息一般存在关系型数据库上(比如MySQL); 4 底层数据是存储在 HDFS 上,hive本身并不提供数据的存储功能; 5 数据存储方面:他能够存储很大的数据集,并且对数据完整性、格式要求并不严格; 6 数据处理方面:不适用于实时计算和响应,使用于离线分析。 为什么使用Hive 1 直接使用 MapReduce、Tez、Spark学习成本太高,因为需要了解底层具体执行引擎的处理逻辑,而且需要一定的编码基础;而Hive提供直接使用类sql语言即可进行数据查询和处理的平台或接口,只要使用者熟悉sql语言即可; 2 MapReduce、Tez、Spark实现复杂查询逻辑开发难度大,因为需要自己写代码实现整个处理逻辑以及完成对数据处理过程的优化,而hive将很多数据统计逻辑封装成了可直接使用的窗口函数,且支持自定义窗口函数来进行扩展

转载:外部表

霸气de小男生 提交于 2019-12-05 03:55:57
转载于: https://www.iteye.com/blog/czmmiao-1268712 关于12cocp的一道题 What must you use to read data from a table in your database and write it to an external table? A. Use CREATE TABLE...ORGANIZATION EXTERNAL command with ORACLE_DATAPUMP access driver B. Use SQL* LOADER direct path load C. Use SQL* LOADER conventional path load D. Use CREATE TABLE... ORGANIZATION EXTERNAL command with ORACLE_LOADER access driver 参考答案:A 答案A和D很相似,就是他们两者之间的区别,我们下面做个测试看两者是否都能满足从本地读数据写入到外部表。 Oracle Database provides two access drivers: ORACLE_LOADER and ORACLE_DATAPUMP . By providing the database with metadata describing

# Hive基础问题

走远了吗. 提交于 2019-12-05 03:14:50
1.Hive的主要作用是什么? 1.Hive是基于hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并且提供sql查询。相当于mapreduce的客户端。 2.启动Hive的方式有哪些? bin/hive bin/hiveserver2 3.请谈一下Hive的特点是什么?Hive和RDBMS有什么异同? hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 4.Redis, 传统数据库,hbase,hive 每个之间的区别 1)Redis 是基于内存的数据库,注重实用内存的计算。 2)hbase是列式数据库,无法创建主键,地从是基于HDFS的,每一行可以保存很多的列。 3)hive是数据的仓库,是为了减轻mapreduce而设计的,不是数据库,是用来与hadoop做交互的。 5.Hive创建id,name,sex表的语法是什么? create table student(id int,name String,sex String) row format delimited fields terminated

Hive内部表和外部表

こ雲淡風輕ζ 提交于 2019-12-05 00:39:26
Hive表分为内部表和外部表 Hive默认建立的表是内部表,内部表create之后,然后load加载hdfs上的数据,会移动物理数据到Hive的数据仓库默认目录(/user/hive/warehouse/xx.db/)下。 内部表drop之后,元数据和物理数据都会删除。 外部表在导入hdfs的数据后,数据并没有移动到自己的数据仓库目录下,也就是说外部表中的数据并不是由它自己来管理的! 外部表drop掉之后,元数据删掉了,但是实际物理数据还存在原位置。 以下是示例: 在本地建立vim一个course.txt文件 上传到hdfs文件系统上inner目录下和ext目录下 [root@master hiveTest]# hdfs dfs -put ./course.txt /inner [root@master hiveTest]# hdfs dfs -put ./course.txt /ext hive创建内部表 hive> create table db_hive.courseInner(id int,course string) row format delimited fields terminated by ','; 加载hdfs的inner目录下的course.txt到内部表 hive> load data inpath '/inner/course.txt' into

Hive面试题

旧城冷巷雨未停 提交于 2019-12-04 17:24:18
Hive数据倾斜 key分布不均匀 业务数据本身的特性 SQL语句造成数据倾斜 解决方法 hive设置hive.map.aggr=true和hive.groupby.skewindata=true 还有其他解决方案 Hive内部表和外部表的区别 Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。 在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。这样外部表相对来说更加安全些,数据组织也更加灵活,方便共享源数据。 hive的元数据和存储引擎 hive的元数据存储着通过hive所建的库和表的结构信息, 以及所对应的hdfs上的文件夹 hive可以使用mysql作为存储引擎,也可以使用其他数据库 Hive的特点以及和关系型数据库的区别 hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 hive导入数据的几种方式 从本地导入: load data local inpath ‘/home/1.txt’ (overwrite

Hive_创建表

旧城冷巷雨未停 提交于 2019-12-03 12:12:11
1.建表语法 CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name [(col_name data_type [COMMENT col_comment], ...)] [COMMENT table_comment] [PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)] [CLUSTERED BY (col_name, col_name, ...) [SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS] [ROW FORMAT row_format] [STORED AS file_format] [LOCATION hdfs_path] [TBLPROPERTIES (property_name=property_value, ...)] [AS select_statement] 2.字段解释说明 (1)CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXISTS 选项来忽略这个异常。 (2)EXTERNAL关键字可以让用户创建一个外部表,在建表的同时可以指定一个指向实际数据的路径(LOCATION), 在删除表的时候

Hive 笔记2

匿名 (未验证) 提交于 2019-12-03 00:19:01
create database db_hive_01; create database if not exists db_hive_02; create database if not exists db_hive_03 location '/user/tzhang/hive/warehouse/db_hive_03.db'; show databases; show databases like 'db_hive*'; use db_hive; desc database db_hive_02; desc database extended db_hive_02; drop database db_hive_02;// 有表无法删除 drop database db_hive_02 cascade;// 级联删除可以 drop database db_hive_02 if exists; 创建表 HIVE中:overwrite如果有数据,重写 load data local inpath ‘/opt/datas/emp.txt’overwrite into table emp; load data local inpath ‘/opt/datas/dept.txt’overwrite into table dept; create table if not exists

Greenplum中装载和卸载数据

匿名 (未验证) 提交于 2019-12-03 00:18:01
装载和卸载数据 GP装载概述 关于外部表 WEB:访问动态数据源(比如wen服务或者OS的命令或脚本) 关于gpload 2) 需要创建一个按照YAML格式定义的装载说明控制文件 关于copy 2) 不具有并行装载/卸载的机制 定义外部表 概述 在创建外部表定义时,必须指定文件格式和文件位置;三种用来访问外部表数据源的协议:gpfdist, gpfdists和gphdfs。 gpfdist 5) 可使用通配符或者C风格的模式匹配多个文件 gpfdists 1) gpfdists是gpfdist的安全版本,其开启的加密通信并确保文件与GP之间的安全认证 file 4) pg_max_external_files用来确定每个外部表中允许多少个外部文件 gphdfs 4) 对于写来说,每个GP Segment实例值写该实例包含的数据 外部文件格式 3) 自定义格式适用于gphdfs 外部表中的错误数据 为了在装载正确格式的记录时隔离错误数据,需在定义外部表时使用单条记录出错处理 外部表备份恢复 在备份或者恢复操作中,仅仅外部表或者WEB外部表的定义会被备份或恢复。 使用GP并行文件服务(gpfdist) b) 在后台启动gpfdist(日志信息和出错信息输出到日志文件) 1 c) 要在同一个ETL主机启动多个gpfdist服务,为每个服务指定不同的目录和端口。例如, 1 2