Hive 基础命令和 TPC-H Benchmark

Hive命令

1)创建表: create table tablename;

  默认的分割符是 创建以\t为分割符的表: 

  e.g.

  create table tablename(id int, name string) 

  row format delimited fields terminated by '\t'

2)插入: load data [local] inpath 'path/data'  [overwrite] into table tablename;

  local 表示从本地读入,忽略则从hdfs上读入。

  overwrite 表示覆盖原表里的数据,不写则不会覆盖

3)删除表:drop table tablename;

  外表:CREATE EXTERNAL TABLE创建的表

  内表:CREATE TABLE创建的表

  如果删除的是外表,则数据会保留,只删除表的元数据;

  如果删除的是内表,则会删除表的元数据,以及对应数据的元数据。

4)支持类型:

  TINYINT,SMALLINT,INT,BIGINT,BOOLEAN,

  FLOAT,DOUBLE,STRING.

5)正则:   我所知道的有两种方式:

(1)  regexp_extract

(2)  "A"REGEXP "B"

在使用hive中函数regexp_extract需要注意的是正则表达式的\需要使用\进行转义,也就是说,需要使用\\两道斜线

例子:

1)      SELECT regexp_extract('1.2.3.','\\d',0) FROM table_name limit 4;  

2)      SELECT  DISTINCT grams, year, occurrences FROMenglish_1grams WHERE year > 2000 AND gram REGEXP "A[0-9]+" LIMIT 10000

 

在Hive源码中的位置:

hive-0.11.0/src/ql/src/java/org/apache/hadoop/hive/ql/udf

类:UDFRegExp  函数:evaluate

 

Map和Reduce函数在Hive源码中的位置:

hive-0.11.0/src/ql/src/java/org/apache/hadoop/hive/ql/exec

类:ExecMapper 函数:map

 

hive-0.11.0/src/ql/src/java/org/apache/hadoop/hive/ql/exec

类:ExecReducer 函数:reduce


编译 Hive

命令:        ant clean package eclipse-files -Dhadoop.version=2.0.3-alpha -Dhadoop-0.23.version=2.0.3-alpha -Dhadoop.mr.rev=23
(注意所用的Hadoop版本)
如果要用Eclipse:       ant eclipse-files 

Hive 资源

  FaceBook 镜像(被墙):http://mirror.facebook.com/facebook/hive

  Wiki 页面:http://wiki.apache.org/hadoop/Hive

  入门指南:http://wiki.apache.org/hadoop/Hive/GettingStarted

  查询语言指南:http://wiki.apache.org/hadoop/Hive/HiveQL

  演示文稿:http://wiki.apache.org/hadoop/Hive/Presentations

  蓝图:http://wiki.apache.org/hadoop/Hive/Roadmap

TPC-H Benchmark

  tar xvzf tpch_2_14_3.tgz 解压后进入生成的dbgen文件夹
   
  复制  makefile.suite 为 makefile 
  cp makefile.suite makefile
  修改 makefile 如下:
  CC = gcc 
  DATABASE = SQLSERVER
  MACHINE=LINUX
  WORKLOAD = TPCH

  修改tpch.h文件
  修改其中的SQLSERVER段为:
  #ifdef  SQLSERVER
  #define GEN_QUERY_PLAN   "EXPLAIN;"
  #define START_TRAN       "START TRANSACTION;\n"
  #define END_TRAN         "COMMIT;\n"
  #define SET_OUTPUT       ""
  #define SET_ROWCOUNT     "limit %d;\n"
  #define SET_DBASE        "use %s;\n"
  #endif

  修改后 make 编译源文件
  生成 dbgen 可执行文件
  ./dbgen -s 1 # -s 1  表示生成1G数据
  在当前文件夹下生成的 8个tbl文件就是我们想要的数据
 
  生成的SQL命令无法正在的在HIVE上执行
  在JIRA上下载最新的TPCH on HIVE 的命令包
  https://issues.apache.org/jira/browse/HIVE-600
  解压后将之前生成的8个表放到 data目录下
  执行脚本 tpch_prepare_data.sh,将数据放到HDFS上。 
  之后,我们就可以执行tpch目录下的命令了。
  hive -f    /PATH/q1.hive
 


你可能感兴趣的:(分布式)