hive数据单位包含哪些内容
本帖最后由 pig2 于 2018-4-29 10:31 编辑根据颗粒度的顺序,Hive数据被组织成:
[*]数据库:命名空间功能,为了避免表,视图,分区,列等等的命名冲突。数据库也可以用于加强用户或用户组的安全。
[*]表:相同数据库的同类数据单元。例如表`page_views`,表的每行包含以下列:
[*]timestamp -这是一个`INT`类型,是当页面被访问时的UNIX时间戳。
[*]userid -这是一个`BIGINT`类型,用于惟一识别访问页面的用户。
[*]page_url -这是一个`STRING`类型,用于存储页面地址。
[*]referer_url -这是一个`STRING`类型,用于存储用户是从哪个页面跳转到本页面的地址。
[*]IP -这是一个`STRING`类型,用于存储页面请求的IP地址。
[*]分区:每个表可以有一个或多个用于决定数据如何存储的分区键。分区(除存储单元之外)也允许用户有效地识别满足指定条件的行;例如,`STRING`类型的`date_partition`和`STRING`的`country_partition`。这些分区键的每个惟一的值定义了表的一个分区。例如,所有的“2009-12-23”日期的“US”数据是表`page_views`的一个分区。(注意区分,分区键与分区,如果分区键有两个,每个分区键有三个不同的值,则共有6个分区)。因此,如果你只在日期为“2009-12-23”的“US”数据上执行分析,你将只会在表的相关数据上执行查询,这将有效地加速分析。然而要注意,那仅仅是因为有个分区叫2009-12-23,并不意味着它包含了所有数据,或者说,这些数据仅仅是那个日期的数据。用户需要保证分区名字与数据内容之间的关系。分区列是虚拟列,它们不是数据本身的一部分,而是源于数据加载。
[*]桶(Buckets or Clusters):每个分区的数据,基于表的一些列的哈希函数值,又被分割成桶。例如,表`page_views`可能通过`userid`分成桶,`userid`是表`page_view`的一个列,不同于分区列。这些桶可以被用于有效地抽样数据。
页:
[1]