求知 文章 文库 Lib 视频 Code iProcess 课程 认证 咨询 工具 火云堂 讲座吧   成长之路  
会员   
 
追随技术信仰

随时听讲座
每天看新闻
 
 

Hive教程
Hive安装
Hive数据类型
Hive创建数据库
Hive删除数据库
Hive创建表
Hive修改表
Hive删除表
Hive分区
Hive内置运算符
Hive内置函数
Hive视图和索引
HiveQL Select Where
HiveQL Select Order By
HiveQL Select Group By
HiveQL Select Join
 
 

Hive创建表
22 次浏览
4次  
 捐助

本章将介绍如何创建一个表以及如何将数据插入。创造表的约定在Hive中非常类似于使用SQL创建表。

CREATE TABLE语句

Create Table是用于在Hive中创建表的语句。语法和示例如下:

语法

CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS] [db_name.] table_name    
[(col_name data_type [COMMENT col_comment], ...)]  
[COMMENT table_comment]  
[ROW FORMAT row_format]  
[STORED AS file_format] 

示例

假设需要使用CREATE TABLE语句创建一个名为employee表。下表列出了employee表中的字段和数据类型:

下面的数据是一个注释,行格式字段,如字段终止符,行终止符,并保存的文件类型。

COMMENT ‘Employee details’  
FIELDS TERMINATED BY ‘\t’  
LINES TERMINATED BY ‘\n’  
STORED IN TEXT FILE 

下面的查询创建使用上述数据的表名为 employee。

hive> CREATE TABLE IF NOT EXISTS employee ( eid int, name String,  
> salary String, destination String)  
> COMMENT ‘Employee details’  
> ROW FORMAT DELIMITED  
> FIELDS TERMINATED BY ‘\t’  
> LINES TERMINATED BY ‘\n’  
> STORED AS TEXTFILE; 

如果添加选项IF NOT EXISTS,Hive 忽略大小写,万一表已经存在的声明。

成功创建表后,能看到以下回应:

OK  Time taken: 5.905 seconds  hive>

JDBC 程序

以下是使用JDBC程序来创建表给出的一个例子。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveCreateTable {     
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance        
Class.forName(driverName);                
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");                
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("CREATE TABLE IF NOT EXISTS "           
+" employee ( eid int, name String, "           
+" salary String, destignation String)"           
+" COMMENT ‘Employee details’"           
+" ROW FORMAT DELIMITED"           
+" FIELDS TERMINATED BY ‘\t’"           
+" LINES TERMINATED BY ‘\n’"           
+" STORED AS TEXTFILE;");                   
System.out.println(“ Table employee created.”);        
con.close();     }  }

将该程序保存在一个名为HiveCreateDb.java文件。下面的命令用于编译和执行这个程序。

$ javac HiveCreateDb.java  $ java HiveCreateDb

输出

Table employee created.

LOAD DATA语句

一般来说,在SQL创建表后,我们就可以使用INSERT语句插入数据。但在Hive中,可以使用LOAD DATA语句插入数据。

同时将数据插入到Hive,最好是使用LOAD DATA来存储大量记录。有两种方法用来加载数据:一种是从本地文件系统,第二种是从Hadoop文件系统。

语法

加载数据的语法如下:

LOAD DATA [LOCAL] INPATH 'filepath' 
[OVERWRITE] INTO TABLE tablename   
[PARTITION (partcol1=val1, partcol2=val2 ...)]

LOCAL是标识符指定本地路径。它是可选的。

OVERWRITE 是可选的,覆盖表中的数据。

PARTITION 这是可选的

示例

我们将插入下列数据到表中。在/home/user目录中名为sample.txt的文件。

1201  Gopal       45000    Technical manager  
1202  Manisha     45000    Proof reader  
1203  Masthanvali 40000    Technical writer  
1204  Kiran       40000    Hr Admin  
1205  Kranthi     30000    Op Admin 

下面的查询加载给定文本插入表中。

hive> LOAD DATA LOCAL INPATH '/home/user/sample.txt'  > OVERWRITE INTO TABLE employee; 

下载成功完成,能看到以下回应:

OK  Time taken: 15.905 seconds  hive>

JDBC 程序

下面给出的是JDBC程序将给定的数据加载到表中。

import java.sql.SQLException;  
import java.sql.Connection;  
import java.sql.ResultSet;  
import java.sql.Statement;  
import java.sql.DriverManager;    
public class HiveLoadData {       
private static String driverName = "org.apache.hadoop.hive.jdbc.HiveDriver";          
public static void main(String[] args) throws SQLException {             
// Register driver and create driver instance        
Class.forName(driverName);                
// get connection        
Connection con = DriverManager.getConnection("jdbc:hive://localhost:10000/userdb", "", "");                
// create statement        
Statement stmt = con.createStatement();                
// execute statement        
stmt.executeQuery("LOAD DATA LOCAL INPATH '/home/user/sample.txt'" 
+ "OVERWRITE INTO TABLE employee;");        
System.out.println("Load Data into employee successful");                
con.close();     }  }

将该程序保存在一个名为HiveLoadData.java文件。使用下面的命令来编译和执行这个程序。

$ javac HiveLoadData.java  $ java HiveLoadData

输出:

Load Data into employee successful

 


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



22 次浏览
4次
 捐助
 


每天2个文档/视频
扫描微信二维码订阅
订阅技术月刊
获得每月300个技术资源
 
 

关于我们 | 联系我们 | 京ICP备10020922号 京公海网安备110108001071号