0%

使用注解方式

有些人习惯于用映射文件xml方式配置,有些人习惯于使用注解的方式来编写映射语句,这里来说明一下注解的使用方式

@Insert注解

用于定义insert语句,作用等同于xml配置中标签

1
2
3
@Insert("insert  into classes (name) values (#{name})")
@Options(useGeneratedKeys = true,keyProperty = "id") // 使用@Options来设置主键自增
int insertClasses(Classes classes);
阅读全文 »

函数

hive中有很多内置函数可以使用

查看内置函数

1
show functions;

查看函数的用法及作用

1
desc function floor_day;

查看函数的详细用法

1
desc function extended floor_day;
阅读全文 »

分区信息无法查到的问题

在hive上创建了分区表,但是有些数据在hdfs上创建的文件夹,然后将数据直接传到hdfs该文件夹下,导致hive上查询不到该该文件夹所对应的分区信息,这个原因是因为数据从hive上传的话在元数据中存储有分区信息,但是hdfs直接上传的话在hive的元数据中并不会记录,就会导致查不到这部分数据

阅读全文 »

MySQL查询

在进行MySQL查询之前首先要先知道MySQL执行查询语句的执行顺序

  • 先执行from子句确定数据来源
  • 再执行where子句确定筛选条件
  • group by子句将数据进行分组
  • 使用聚集函数进行计算
  • 使用having子句筛选分组
  • 计算所有的表达式
  • select的字段
  • 使用order by进行排序
阅读全文 »

分区表

由于hive作为数据仓库来说,存放的数据量特别大,而在进行数据分析的时候,其实并不需要分析这么大的数据,为了避免全表扫描,hive提供了分区表,分区表其实就是分为不同的文件夹,把一个大的业务表根据业务将数据集进行切分,这样在进行数据查询的时候指定分区进行查询,效率会提高很多倍

之前在说创建表语句时,创建表语法中有一个创建分区表的关键字PARTITIONED BY,可以根据该语法来进行创建分区表

阅读全文 »

查询数据

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;
阅读全文 »