外部表

hive初学――第一天

匿名 (未验证) 提交于 2019-12-02 23:59:01
hiveѧϰ 数据仓库 定义 优缺点 优点 缺点 Hive和RDBMS的对比 Hive 和 HBase 的差别 Hive架构 基本组成 一、用户接口 二、Thrift Server 三、元数据存储 四、Driver:编译器(Compiler),优化器(Optimizer),执行器(Executor) 五、Hive的执行流程 Hive 的数据存储 数据仓库 数据仓库是面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。 定义 hive是由facebook开源并实现。 hive是基于hadoop的数据仓库工具。 hive的元数据存储于关系型数据库中,真是数据存储于HDFS中。 hive是将HDFS中的数据映射为一张二维表。 hive提供HQL语句对数据进行操作。 hive的本质是将HQL语句转换为Mapreduce程序执行。 hive目的是简化MR程序的编写难度。 优缺点 优点 1、可扩展性: 横向扩展:可以自由的扩大集群规模,一般情况不需重启服务器。 纵向扩展:通过提升服务器的配置来扩展。 2、延展性:hive支持自定义函数,用户可根据需求自定义函数。 3、良好的容错性:可以保障即使节点出故障,HQL语句仍然可以执行完。 缺点 1、Hive 不支持记录级别的增删改操作,但是用户可以通过查询生成新表或者将查询结 果导入到文件中(当前选择的 hive-2.3.3

hive的外部表

匿名 (未验证) 提交于 2019-12-02 23:59:01
最近买了一本hive看,发现书中有一个错误: 我的验证如下: 1.外部表数据存在自己表所属的目录下 2.还发现了 CTAS 操作不能 建立外部表 来源:博客园 作者: wqbin 链接:https://www.cnblogs.com/wqbin/p/11484092.html

mysql迁移mpp数据库Greenplum

匿名 (未验证) 提交于 2019-12-02 22:06:11
因兄弟项目中mysql有点扛不住了,要做sql优化,但是业务有点小复杂,优化起来有点麻烦(sql嵌套有点多),便想着用Mpp数据库Greenplum测试下,看性能和复杂度怎么样,趟趟水。 初步的想法是:因为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),以前使用navicat for

Apache Hive

左心房为你撑大大i 提交于 2019-12-02 07:03:25
1.Hive简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。   本质是将SQL转换为MapReduce程序。   主要用途:操作接口采用类SQL语法,提供快速开发的能力,功能扩展方便,用来做离线分析,比直接用MapReduce开发效率更高。 2.Hive架构 2.1Hive架构图 2.2Hive组件 用户接口:包括CLI、JDBC/ODBC、WebGUI。其中CLI(command line interface)为shell命令行;JDBC/ODBC是hive的JAVA试下,与传统数据库JDBC类似;WebGUI是通过浏览器访问Hive。 元数据存储:通常是存储在关系数据库中如mysql/derby中。Hive将元数据存储在数据库中。Hive中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表),表的数据所在的目录等。 解释器、编译器、优化器、执行器:完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划生成。生成的查询计划存储在HDFS中,并在随后又MapReduce调用执行。 2.3Hive与Hadoop的关系 Hive利用HDFS存储数据,利用MapReduce查询分析数据。 3.Hive与传统数据库对比 Hive用于海量数据数据的离线数据分析。 Hive具有sql数据库外表

Hive 数据导入HBase的2种方法详解

一世执手 提交于 2019-12-02 05:51:57
最近经常被问到这个问题,所以简单写一下总结。 Hive数据导入到HBase基本有2个方案: 1、HBase中建表,然后Hive中建一个外部表,这样当Hive中写入数据后,HBase中也会同时更新 2、MapReduce读取Hive数据,然后写入(API或者Bulkload)到HBase 1、Hive 外部表 创建hbase表 (1) 建立一个表格classes具有1个列族user create 'classes','user' (2) 查看表的构造 hbase(main):005:0> describe 'classes' DESCRIPTION ENABLED 'classes', {NAME => 'user', DATA_BLOCK_ENCODING => 'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE => '0', true VERSIONS => '1', COMPRESSION => 'NONE', MIN_VERSIONS => '0', TTL => '2147483647', KEEP_DELETED_CELLS => ' false', BLOCKSIZE => '65536', IN_MEMORY => 'false', BLOCKCACHE => 'true'} (3) 加入2行数据 put 'classes

hive开发规范

一世执手 提交于 2019-12-01 22:48:39
hive常用交互命令 “-e” 不进入hive的交互窗口执行sql语句。 eg: bin/hive -e "show tables;" “-f” 执行脚本中sql语句 eg: bin/hive -f "/home/user/hive/tmp/hivef.sql"; "!quit" 退出hive交互窗口 "help" 在hive窗口获取帮助 “dfs -ls /;” 在hive cli命令窗口中查看hdfs文件系统 hive的数据类型 基本类型 hive数据类型 java数据类型 长度 例子 tinyint byte 1byte有符号整数 20 smalint short 2byte有符号整数 20 int int 4byte有符号整数 20 bigint long 8byte有符号整数 20 boolean boolean 布尔类型,true或者false true false float float 单精度浮点数 3.14159 double double 双精度浮点数 3.14159 string string 字符系列。可以指定字符集。可以使用单引号或者双引号。 ‘now is the time’ “for all good men” timestamp 时间类型 binary 字节数组 集合类型 数据类型 描述 语法示例 struct 和c语言中的struct类似

[随笔][Hive][记事本]

喜欢而已 提交于 2019-12-01 22:19:30
设置字段分隔符的时候,如果使用多个字符,实际产生作用的就是第一个。 create table lilybak row format delimited fields terminated by "hello" as select name, age from lily; 生成的文件中的分隔符就是一个h字符。 如果一个字段没有只,那么对应的就是null。 外部表和内部表 一个表为管理表,删除表的的元数据的时候存储表数据的目录一同被删除,无论这个目录是hive创建的还是创建的时候已经存在的。 一个外部表,删除表的元数据的时候存储表的数据的目录不被删除,无论这个目录是hive创建的还是已经存在的。 创建一个表的时候,如果不使用location关键字,则使用默认的创建位置和默认的目录名字。无论是管理表还是外部表,都可以在创建的时候指定存储目录。 分区:按照某些字段的取值将数据分目录存放。数据在存储的时候需要手动指定分区,也就是指定将数据存储在哪个子目录下。 分桶:对某个字段进行哈希,哈希相同的存放到同一个文件中,防止热块。这个处理起来可能比较慢,不是简单的拷贝,需要读取文件然后存文件。 试图是一个逻辑表,元数据中纪录了该表中的每个字段对应着哪个表的哪个字段,本身在文件系统中并没有创建用于存储该表的数据的目录。 load data 是原样拷贝。如果目标目录中不存在同名文件,则文件名都不改变

Amazon Redshift Spectrum

倾然丶 夕夏残阳落幕 提交于 2019-11-30 18:39:45
Amazon Redshift Spectrum 驻留在独立于您的集群的专用 Amazon Redshift 服务器上。 Redshift Spectrum 将很多计算密集型任务 (如谓词筛选和聚合) 下推到 Redshift Spectrum 层。因此,Redshift Spectrum 查询使用的集群处理容量比其他查询的少得多。Redshift Spectrum 还可智能地扩展。基于您的查询的需求,Redshift Spectrum 可能能够使用数千个实例来利用大规模并行处理。 您通过定义您的文件的结构并将文件作为外部数据目录中的表注册来创建 Redshift Spectrum 表。外部数据目录可以是 AWS Glue、Amazon Athena 附带的数据目录或您自己的 Apache Hive 元存储。您可使用数据定义语言 (DDL) 命令或使用连接到外部数据目录的任何其他工具从 Amazon Redshift 创建和管理外部表。对外部数据目录进行的更改将立即对您的任何 Amazon Redshift 集群可用。 您也可在一个或多个列上为外部表分区。将分区定义为外部表的一部分可提升性能。改进的原因是 Amazon Redshift 查询优化程序消除了不含所查询数据的分区。 在定义 Redshift Spectrum 表之后,您可以像查询和联接任何其他 Amazon

Hbase与Hive数据同步

拜拜、爱过 提交于 2019-11-29 18:13:23
@Author : Spinach | GHB @Link : http://blog.csdn.net/bocai8058 文章目录 同步过程 同步过程 在Hbase中创建一张表create ‘user_sysc’, {NAME => ‘info’}; 在hive中运行如下,从而创建一个外部表user_sysc: # 在hive中创建一个外表 CREATE EXTERNAL TABLE user_sysc (key int, value string) ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ( 'serialization.format'='\t', 'hbase.columns.mapping'=':key,info:value', 'field.delim'='\t') TBLPROPERTIES ('hbase.table.name'='user_sysc') 将外部表指向hbase中的表,在hive运行如下: # 将外部表映射到hbase insert into table user_sysc select id,name from

2019大数据面试题

这一生的挚爱 提交于 2019-11-29 07:27:42
【原文需购,分享给各位白嫖党,请自行保存】 1. ConcurrentHashMap 是怎么实现的? 答:concurrent 包中线程安全的哈希表,采用分段锁,可以理解为把一个大的 Map 拆分成 N 个小的 HashTable,根据 key.hashCode() 来决定把 key 放到哪个 HashTabl 中。在 ConcurrentHashMap 中,就是把 Map 分成了 N 个 Segment,put 和 get 的时候,都是现根据 key.hashCode() 算出放到哪个 Segment 中。 2. sparksql 和 sparkstreaming 哪个比较熟 答:都还行,SparkSql 的 DataFrame 或者 DataSet 和 SparkStreaming 的 DStream 都是基于SparkCore 的,最终都会转化为 Sparktask 执行。我们可以交流一下本质的东西 SparkCore,而SparkCore 的核心又是 RDD。 3. 说一下 sparkshuffle 答:Spark 的 shuffle 也是一处理问题的思想:分而治之。shuffle 一般称为洗牌,一般会有Shuffle。 Write 阶段 和 Shuffle Read 阶段。在 Spark 中实现 Shuffle 的方式有两种,一种是 HashShuffle,一种是