0%

查询数据

hive查询语法除了某些hive本身的一些特性之外,和sql语法大致相同,与sql大致相同的大体过一下,主要说明一下hive特性的一些查询

基本语法

1
2
3
4
5
6
7
8
9
SELECT [ALL | DISTINCT] select_expr, select_expr, ...
FROM table_reference
[WHERE where_condition]
[GROUP BY col_list]
[ORDER BY col_list]
[CLUSTER BY col_list
| [DISTRIBUTE BY col_list] [SORT BY col_list]
]
[LIMIT [offset,] rows]
阅读全文 »

hive导出数据

有时候需要将hive中的数据导出来,那么如何导出数据呢

使用insert导出

1
2
3
4
5
6
7
8
9
-- 导出到本地 local
insert overwrite local directory '/Users/zhanghe/Desktop/user/myself/hive_data/export/dept'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from dept;

-- 导出到hdfs
insert overwrite local directory '/export/dept'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
select * from dept;
阅读全文 »

hive导入数据

hive中创建表之后如何给表中添加数据呢,其实是有很多种方式的

使用hdfs

首先由于hive的数据是在hdfs存储的,所以其实是可以直接使用hdfs来将文件上传到对应表的目录下,此时表中就存在数据了

建表

1
2
3
4
5
6
-- 这里建表时指定了字段之间的分隔符为\t,而不使用默认的分隔符
create table if not exists dept(
deptno int,
dname string
)
row format delimited fields terminated by '\t';

使用desc formatted dept来找到该表所对应的hdfs存储位置为hdfs://localhost:9000/user/hive/warehouse/study_hive.db/dept

阅读全文 »

hive内部表和外部表

在hive建表语句中有一个EXTERNAL关键字,用来区分创建内部表还是外部表

内部表

内部表也称管理表,默认创建的表都是内部表,因为这种表,Hive 会(或多或少地)控制着数据的生命周期。Hive 默认情况下会将这些表的数据存储在由配置项hive.metastore.warehouse.dir(默认为/user/hive/warehouse)所定义的目录的子目录下。

当我们删除一个管理表时,Hive 也会删除这个表中数据。管理表不适合和其他工具共享数据

阅读全文 »

hive操作数据表之DML操作

hive的很多操作方式是与sql是一样的,这里先说一下DML操作的语句

数据库操作

数据库列表

1
hive (default)> show databases;
阅读全文 »