1、hive 内部表和外部表的区别
未被 external 修饰的是内部表,被 external 修饰的为外部表。
区别:
内部表数据由 Hive 自身管理,外部表数据由 HDFS 管理;
内部表数据存储的位置是 hive.metastore.warehouse.dir(默认:/user/hive/warehouse),外部
表数 据 的 存 储 位 置 由 自 己 制 定 ( 如 果 没 有 LOCATION , Hive 将在 HDFS 上 的
/user/hive/warehouse 文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存
放在这里);
删除内部表会直接删除元数据(metadata)及存储数据;删除外部表仅仅会删除元数据,HDFS
上的文件并不会被删除。
2、Hive 有索引吗
Hive 支持索引(3.0 版本之前),但是 Hive 的索引与关系型数据库中的索引并不相同。并且
Hive 索引提供的功能很有限,效率也并不高,因此 Hive 索引很少使用。
索引适用的场景:
适用于不更新的静态字段。以免总是重建索引数据。每次建立、更新数据后,都要重建索
引以构建索引表。
3、运维如何对 hive 进行调度
将 hive 的 sql 定义在脚本当中;
使用 azkaban 或者 oozie 进行任务的调度;
监控任务调度页面
4、ORC、Parquet 等列式存储的优点
- ORC:ORC 文件是自描述的,它的元数据使用 Protocol Buffers 序列化,文件中的数据尽可
能的压缩以降低存储空间的消耗;以二进制方式存储,不可以直接读取;自解析,包含许多
元数据,这些元数据都是同构 ProtoBuffer 进行序列化的;会尽可能合并多个离散的区间尽
可能的减少 I/O 次数;在新版本的 ORC 中也加入了对 Bloom Filter 的支持,它可以进一 步提
升谓词下推的效率,在 Hive 1.2.0 版本以后也加入了对此的支 持。
- Parquet:Parquet 支持嵌套的数据模型,类似于 Protocol Buffers,每一个数据模型的
schema 包含多个字段,每一个字段有三个属性:重复次数、数据类型和字段名;Parquet 中
没有 Map、Array 这样的复杂数据结构,但是可以通过 repeated 和 group 组合来实现;通过
Striping/Assembly 算法,parquet 可以使用较少的存储空间表示复杂的嵌套格式,并且通常
Repetition level 和 Definition level 都是较小的整数值,可以通过 RLE 算法对其进行压缩,进
一步降低存储空间;Parquet 文件以二进制方式存储,不可以直接读取和修改,Parquet 文件
是自解析的,文件中包括该文件的数据和元数据。
5、数据建模用的哪些模型
星型模型
星形模式(Star Schema)是最常用的维度建模方式。星型模式是以事实表为中心,所有的维度
表直接连接在事实表上,像星星一样。星形模式的维度建模由一个事实表和一组维表成,且