标签:date ice grant cas ctrl+v 结果 trunc var 移动
1. 上传tar包
2. 解压 tar -zxvf hive-1.2.1.tar.gz -C /export/server
3. 安装mysql数据库
#在线安装
yum install mysql mysql-server mysql-devel
完成后,用 /etc/init.d/mysqld start 启动mysql
mysql #启动mysql控制台
mysql>; USE mysql;
mysql>; UPDATE user SET Password=PASSWORD(‘newpassword‘) WHERE user=‘root‘; #设置密码
mysql>; FLUSH PRIVILEGES;
#允许远程登录
mysql -u root -p
Enter Password: <your new password>
mysql>GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘密码‘ WITH GRANT OPTION;
service mysqld start #启动mysql服务
4. 配置hive
(a)配置HIVE_HOME环境变量
vi conf/hive-env.sh 配置其中的$hadoop_home
(b)配置元数据库信息
vi hive-site.xml
添加如下内容:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
<description>password to use against metastore database</description>
</property>
</configuration>
5. 安装hive和mysql完成后,将mysql的连接jar包拷贝到$HIVE_HOME/lib目录下
如果出现没有权限的问题,在mysql授权(在安装mysql的机器上执行)
mysql -uroot -p
#(执行下面的语句 *.*:所有库下的所有表 %:任何IP地址或主机都可以连接)
GRANT ALL PRIVILEGES ON *.* TO ‘root‘@‘%‘ IDENTIFIED BY ‘root‘ WITH GRANT OPTION;
FLUSH PRIVILEGES;
6. Jline包版本不一致的问题,需要拷贝hive的lib目录中jline.2.12.jar的jar包替换掉hadoop中的 /home/hadoop/app/hadoop-2.6.4/share/hadoop/yarn/lib/jline-0.9.94.jar
----------------------------------------------------------------------------------------------------------------
Hive几种使用方式:
1.Hive交互shell bin/hive
2.Hive JDBC服务(参考java jdbc连接mysql)
3.hive启动为一个服务器,来对外提供服务
bin/hiveserver2
nohup bin/hiveserver2 1>/var/log/hiveserver.log 2>/var/log/hiveserver.err &
启动成功后,可以在别的节点上用beeline去连接
bin/beeline -u jdbc:hive2://mini1:10000 -n root
或者
bin/beeline
! connect jdbc:hive2://mini1:10000
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] #关于数据块的描述
[LOCATION hdfs_path] #指定数据库在HDFS上的存储位置
[WITH DBPROPERTIES (property_name=property_value, ...)]; #指定数据块属性
show databases; #显示所有库名
desc database [extended] dbname; #显示数据库的详细属性信息
select current_database(); #查看当前正在使用的库名
drop database dbname;
drop database if exists dbname;
drop database if exists dbname cascade; #删除包含表的数据库
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] table_name
[(col_name data_type [COMMENT col_comment], ...)]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[CLUSTERED BY (col_name, col_name, ...)
[SORTED BY (col_name [ASC|DESC], ...)] INTO num_buckets BUCKETS]
[ROW FORMAT row_format]
[STORED AS file_format]
[LOCATION hdfs_path]
说明:
1、 EXTERNAL关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径( LOCATION)。Hive 创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
2、 LIKE 允许用户复制现有的表结构,但是不复制数据。
CREATE [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.]table_name LIKE existing_table;
3、 ROW FORMAT 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,...)]
hive 建表的时候默认的分割符是‘\001‘,若在建表的时候没有指明分隔符,load 文件的时候文件的分隔符需要是‘\001‘;若文件分隔符不是‘001‘,程序不会
报错,但表查询的结果会全部为‘null‘;用 vi 编辑器 Ctrl+v 然后 Ctrl+a 即可输入‘\001‘ -----------> ^A
4、 PARTITIONED BY
分区表指的是在创建表时指定的 partition 的分区空间。一个表可以拥有一个或者多个分区,每个分区以文件夹的形式单独存在表文件夹的目录下。表和列名不区分大小写。分区是以字段的形式在表结构中存在,通过 describe table 命令可以查看到字段存在,但是该字段不存放实际的数据内容,仅仅是分区的表示。
5、 STORED AS SEQUENCEFILE|TEXTFILE|RCFILE
如果文件数据是纯文本,可以使用 STORED AS TEXTFILE。如果数据需要压缩,使用 STORED AS SEQUENCEFILE。TEXTFILE 是默认的文件格式,使用DELIMITED 子句来读取分隔的文件。
6、 CLUSTERED BY INTO num_buckets BUCKETS
对于每一个表(table)或者分,Hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分。Hive 也是针对某一列进行桶的组织。Hive 采用对列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
#默认的内部表
create table student(id int, name string, sex string, age int,department string)
row format delimited fields terminated by ",";
#外部表
create external table student_ext(id int,name string,sex string,age int,department string)
row format delimited fields terminated by ","
location "/hive/student";
#分区表
create external table student_ptn(id int, name string, sex string, age int,department string)
partitioned by (city string)
row format delimited fields terminated by ","
location "/hive/student_ptn";
#分桶表
create external table student_bck(id int, name string, sex string, age int,department string)
clustered by (id) sorted by (id asc, name desc) into 4 buckets
row format delimited fields terminated by ","
location "/hive/student_bck";
#使用CTAS创建表
create table student_cast as select * from student where id < 95012;
#复制表结构
create table student_copy like student;
#查看表的信息
desc student;
desc formatted student;
#查看分区信息
show partitions student_ptn;
#查看表的详细建表语句
show create table student_ptn;
#修改表名
alter table student rename to new_student;
#增加一个字段
alter table new_student add columns (score int);
#修改一个字段
alter table new_student change name new_name string;
#添加多个分区
alter table student_ptn add partition(city="hangzhou") partition(city="chongqing") partition(city="ningbo");
#动态分区
create table student_ptn_age(id int,name string,sex string,department string) partitioned by (age int);
insert overwrite table student_ptn_age partition(age) select id,name,sex,department,age from student_ptn;
#删除分区
alter table student_ptn drop partition (city=‘beijing‘);
#清空表
truncate table student_ptn;
LOAD DATA [LOCAL] INPATH ‘filepath‘ [OVERWRITE] INTO
TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
1 、 filepath
相对路径,例如:project/data1
绝对路径,例如:/user/hive/project/data1
完整 URI,例如:hdfs://namenode:9000/user/hive/project/data1
filepath 可以引用一个文件(在这种情况下,Hive 将文件移动到表中),或者它可以是一个目录(在这种情况下,Hive 将把该目录中的所有文件移动到表中)。
2、 LOCAL
如果指定了 LOCAL, load 命令将在本地文件系统中查找文件路径。
3、 OVERWRITE
如果使用了 OVERWRITE 关键字,则目标表(或者分区)中的内容会被删除,然后再将 filepath 指向的文件/目录中的内容添加到表/分区中。
标签:date ice grant cas ctrl+v 结果 trunc var 移动
原文地址:https://www.cnblogs.com/lifuwei/p/9443014.html