Hive 简明教程
Hive - Alter Table
本章介绍如何修改表的属性,例如更改表名、更改列名、添加列以及删除或替换列。
Rename To… Statement
以下查询将表从 employee 重命名为 emp 。
hive> ALTER TABLE employee RENAME TO emp;
JDBC Program
用于重命名表的 JDBC 程序如下。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveAlterRenameTo {
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("ALTER TABLE employee RENAME TO emp;");
System.out.println("Table Renamed Successfully");
con.close();
}
}
将程序保存在名为 HiveAlterRenameTo.java 的文件中。使用以下命令来编译和执行此程序。
$ javac HiveAlterRenameTo.java
$ java HiveAlterRenameTo
Change Statement
下表包含 employee 表的字段,并显示要更改的字段(以粗体显示)。
Field Name |
Convert from Data Type |
Change Field Name |
Convert to Data Type |
eid |
int |
eid |
int |
name |
String |
ename |
String |
salary |
Float |
salary |
Double |
designation |
String |
designation |
String |
以下查询使用上述数据重命名列名称和列数据类型:
hive> ALTER TABLE employee CHANGE name ename String;
hive> ALTER TABLE employee CHANGE salary salary Double;
JDBC Program
以下是用于更改列的 JDBC 程序。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveAlterChangeColumn {
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("ALTER TABLE employee CHANGE name ename String;");
stmt.executeQuery("ALTER TABLE employee CHANGE salary salary Double;");
System.out.println("Change column successful.");
con.close();
}
}
将程序保存在名为 HiveAlterChangeColumn.java 的文件中。使用以下命令来编译和执行此程序。
$ javac HiveAlterChangeColumn.java
$ java HiveAlterChangeColumn
Add Columns Statement
以下查询向 employee 表中添加一个名为 dept 的列。
hive> ALTER TABLE employee ADD COLUMNS (
dept STRING COMMENT 'Department name');
JDBC Program
用于向表中添加列的 JDBC 程序如下。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveAlterAddColumn {
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("ALTER TABLE employee ADD COLUMNS " + " (dept STRING COMMENT 'Department name');");
System.out.prinln("Add column successful.");
con.close();
}
}
将程序保存在名为 HiveAlterAddColumn.java 的文件中。使用以下命令来编译和执行此程序。
$ javac HiveAlterAddColumn.java
$ java HiveAlterAddColumn
Replace Statement
以下查询从 employee 表中删除所有列,并用 emp 和 name 列替换。
hive> ALTER TABLE employee REPLACE COLUMNS (
eid INT empid Int,
ename STRING name String);
JDBC Program
以下是用于用 empid 和 ename *column with *name 替换 eid 列的 JDBC 程序。
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.DriverManager;
public class HiveAlterReplaceColumn {
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("ALTER TABLE employee REPLACE COLUMNS "
+" (eid INT empid Int,"
+" ename STRING name String);");
System.out.println(" Replace column successful");
con.close();
}
}
将程序保存在名为 HiveAlterReplaceColumn.java 的文件中。使用以下命令来编译和执行此程序。
$ javac HiveAlterReplaceColumn.java
$ java HiveAlterReplaceColumn