• 1. 2010-10-14参考文档:http://wiki.apache.org/hadoop/HiveHIVE入门刘春安
  • 2. Hive定义,作用 数据类型 创建表 查看表结构命令 修改表 导入数据 编写HQL 自定义函数目录
  • 3. Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。 Hive定义,作用
  • 4. 基本类型: TINYINT, SMALLINT, INT, BIGINT, DOUBLE, STRING 复杂类型: Maps, Arrays数据类型
  • 5. CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name LIKE existing_table_name( COLUMN , COLUMN ) [LOCATION hdfs_path] ROWFORMAT: DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMINATED BY char] [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char] | SERDE serde_name [WITH SERDEPROPERTIES (property_name=property_value, property_name=property_value, ...)] FILE_FORMAT: : SEQUENCEFILE | TEXTFILE | RCFILE (Note: only available starting with 0.6.0) | INPUTFORMAT input_format_classname OUTPUTFORMAT output_format_classnameHIVE创建表
  • 6. 查看所有表命令:SHOW TABLES;可以使用通配符,例如:SHOW TABLES “user*”,查看所有已user开头的表。表明必须用双引号扩上。 查看指定表的表结构: describe TABLE_NAME。 查看函数:SHOW FUNCTIONS;describe FUNCTION_NAME 可以查看关于这个函数的使用说明。 查看分区属性: DESCRIBE [EXTENDED] table_name partition_spec 查看表的详细信息: DESCRIBE EXTENDED table_name查看表结构命令
  • 7. 命令:ALTER TABLE 修改表名: ALTER TABLE table_name RENAME TO new_table_name 添加列: ALTER TABLE pokes ADD COLUMNS (new_col INT); 修改列: ALTER TABLE test_change CHANGE a a1 INT[AFTER COLUM][FIRST] 添加分区: ALTER TABLE table_name ADD partition_spec [ LOCATION 'location1' ] partition_spec: : PARTITION (partition_col = partition_col_value, partition_col = partiton_col_value, ...)修改表
  • 8. LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)] 创建表的时候指定文件的存储位置,必须为HDFS中文件。 导入数据
  • 9. 简单查询 支持,group by , Sort By / Order by /Cluster By / Distribute By / 支持聚合函数,sum()等。 支持:join查询,union查询 支持子查询 函数:explode(ARRAY_TYPE),查询结果中只能包含数组一列。 LATERAL VIEW explode(b) adTable AS exb,查询结果中可以包含多列,必须指定别名编写HQL
  • 10. UDF( User Defined Functions),只针对每一行处理,类似SQLSERVER中的UPPER()。 UDAF( User-Defined Aggregation Functions ),相当于聚合函数,对多行进行处理,类似SQLSERVER中的AVG()函数。自定义函数
  • 11. 使用UDF 1、重载evaluate函数。 2、UDF函数中参数类型可以为Writable,也可为java中的基本数据对象。 3、UDF支持变长的参数。 4、Hive支持隐式类型转换。 5、客户端退出时,创建的临时函数自动销毁。 6、evaluate函数必须要返回类型值,空的话返回null,不能为void类型。 7、UDF是基于单条记录的列进行的计算操作,而UDFA则是用户自定义的聚类函数,是基于表的所有记录进行的计算操作。 8、UDF和UDAF都可以重载。 自定义函数