ALTER TABLE name RENAME TO new_name
ALTER TABLE name ADD COLUMNS (col_spec[, col_spec ...])ALTER TABLE name DROP [COLUMN] column_name
ALTER TABLE name CHANGE column_name new_name new_type
ALTER TABLE name REPLACE COLUMNS (col_spec[, col_spec ...])
Rename To… 语句
下面是查询重命名表,把 employee 修改为 emp。
hive>ALTER TABLE employee RENAME TO emp
JDBC 程序
在JDBC程序重命名表如下。
import java.sql.SQLExceptionimport java.sql.Connectionimport java.sql.ResultSetimport java.sql.Statementimport java.sql.DriverManagerpublic 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
输出
Table renamed successfully.
实际应用中,常常存在修改数据表结构的需求,比如:增加一个新字段。
如果使用如下语句新增列,可以成功添加列col1。但如果数据表tb已经有旧的分区(例如:dt=20190101),则该旧分区中的col1将为空且无法更新,即便insert overwrite该分区也不会生效。
解决方法:
解决方法很简单,就是增加col1时加上cascade关键字。示例如下:
加深记忆的方法也很简单,cascade的中文翻译为“级联”,也就是不仅变更新分区的表结构(metadata),同时也变更旧分区的表结构。
ADD COLUMNS lets you add new columns to the end of the existing columns but before the partition columns. This is supported for Avro backed tables as well, for Hive 0.14 and later.
REPLACE COLUMNS removes all existing columns and adds the new set of columns. This can be done only for tables with a native SerDe (DynamicSerDe, MetadataTypedColumnsetSerDe, LazySimpleSerDe and ColumnarSerDe). Refer to Hive SerDe for more information. REPLACE COLUMNS can also be used to drop columns. For example, "ALTER TABLE test_change REPLACE COLUMNS (a int, b int)" will remove column 'c' from test_change's schema.
The PARTITION clause is available in Hive 0.14.0 and latersee Upgrading Pre-Hive 0.13.0 Decimal Columns for usage.
The CASCADE|RESTRICT clause is available in Hive 1.1.0. ALTER TABLE ADD|REPLACE COLUMNS with CASCADE command changes the columns of a table's metadata, and cascades the same change to all the partition metadata. RESTRICT is the default, limiting column changes only to table metadata.
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)