从 Hive 中的现有表创建新表



我正在尝试使用 Hive 查询使用现有表创建一个新表。
在创建新表时,我想添加一个新列并插入所有行的当前时间戳。 例如:

退出表:

|user_id|user_name|user_address|
|1001   |userName |address     |


新表:

|user_id|user_name|user_address|creation_date|
|1001   |userName |address     | 123421342134|

我正在尝试使用 JDBCTemplate 执行此查询。

我尝试过的:

Create table newTable Select * from existingtable;

但是这会复制使用旧值创建新表,我想在创建表期间添加新列并插入值。



请帮忙。

您可以像这样添加新列:

create table newTable AS
select s.*, unix_timestamp(current_timestamp) as creation_date 
from existingtable s;

只能为一个配置单元执行运行hive one-shot command

当您需要运行多个查询执行或运行需要很长时间执行的较大查询时,此实用程序非常有用。

  • 创建一个myquery.hql文件,其中包含由;分隔的所有查询,然后从 HDFSnohup hive -f /myquery.hql运行

您可以通过访问nohup.out文件继续查看控制台:

tail -f nohup.out

如果您需要一个与现有表结构完全相同的新表, 然后 Hive 使创建新表变得非常容易。 这称为克隆表,它是使用 LIKE 子句完成的。 新表将具有与现有表相同的列定义和其他属性,但没有数据。语法是

CREATE TABLE new_table_name LIKE existing_table_name;
CREATE TABLE jobs_archived LIKE jobs;

可以为新表指定一些表属性 通过在创建表中包含适当的子句...喜欢的语句。 例如,可以使用 LOCATION 和 STORED AS 子句。 如果需要更改其他属性,请在创建表后使用 ALTER TABLE 来设置这些属性。

之后,如果需要添加更多列,可以使用 ALTER TABLE 语句。

您可以使用添加列将一列或多列添加到列列表的末尾, 一般语法是

ALTER TABLE tablename ADD COLUMNS (col1 TYPE1,col2 TYPE2,… );
ALTER TABLE employees ADD COLUMNS (bonus INT);

您可以将这些句子包装在 JDBC 语句中。

我希望这有所帮助。

最新更新