📜  Hive-内置功能(1)

📅  最后修改于: 2023-12-03 15:31:08.643000             🧑  作者: Mango

Hive 内置功能

Hive是基于Hadoop系统的数据仓库工具,其内置了大量的功能,以提高数据分析及处理的效率。在本文中,我们会介绍其中几个常用的内置功能。

数据导入导出

Hive支持从多种数据源导入及导出数据,以下是一些常用的方法。

从文件导入数据

通过如下语句,我们可以将指定文件的数据导入到Hive表中:

LOAD DATA LOCAL INPATH '/path/to/file' INTO TABLE tablename;

其中,LOCAL关键字表示从本地磁盘读取文件,INPATH表示文件路径,INTO TABLE后跟目标表的名字。

从其他数据源导入数据

Hive支持从其他类型的数据源(如HBase、JDBC、S3等)中导入数据,实现方法如下:

CREATE TABLE new_table
STORED AS ORC
AS
SELECT *
FROM other_table;

其中,STORED AS ORC表示存储格式为ORC文件,AS后面的查询语句指定了来源表和数据。这个查询可以是跨集群的。

导出数据到文件

我们可以使用如下命令将数据从Hive表中导出到指定文件:

INSERT OVERWRITE LOCAL DIRECTORY '/path/to/output'
SELECT *
FROM table_name;

其中,INSERT OVERWRITE LOCAL DIRECTORY指定了输出路径,SELECT后面跟查询语句。

分区及桶

Hive支持分区和桶,以提高查询效率。

分区

分区是在表级别下的数据分割。我们可以定义表时指定分区键值,如下所示:

CREATE TABLE table_name (
  column1 datatype1,
  column2 datatype2,
  ...
)
PARTITIONED BY (partition_col datatype);

对于已经存在的表,我们可以通过如下命令添加分区:

ALTER TABLE table_name ADD PARTITION (part_col = 'part_val');

partition_col和part_val分别是分区键和对应的值。

桶是将表中的数据划分成若干个桶(Bucket),不同于分区,桶是在分区之内的数据分割。我们在定义表时指定桶的数量和桶的列,如下所示:

CREATE TABLE table_name (
  column1 datatype1,
  column2 datatype2,
  ...
)
CLUSTERED BY (col1, col2, ...)
INTO num_buckets BUCKETS;
窗口函数

窗口函数(Window Functions)为查询返回结果分配一个窗口,计算某个窗口内的函数值。在Hive中,我们可以使用如下语句进行窗口函数的计算:

SELECT row_id, item, price, 
  SUM(price) OVER (
    PARTITION BY row_id
    ORDER BY price
  ) AS running_total
FROM sales_table;

其中,PARTITION BY指定分区键,ORDER BY指定排序规则,running_total是计算结果。

以上内容是Hive内置功能的介绍,希望对你有所帮助!