Hive 从配置单元中的现有表创建新表
我正在尝试使用配置单元查询使用现有表创建一个新表Hive 从配置单元中的现有表创建新表,hive,hiveql,jdbctemplate,create-table,hiveddl,Hive,Hiveql,Jdbctemplate,Create Table,Hiveddl,我正在尝试使用配置单元查询使用现有表创建一个新表 在创建新表时,我想添加一个新列,并为所有行插入当前时间戳。 例如: 退出表格: |user_id|user_name|user_address| |1001 |userName |address | 新表格: |user_id|user_name|user_address|creation_date| |1001 |userName |address | 123421342134| 我正在尝试使用JDBCTempla
在创建新表时,我想添加一个新列,并为所有行插入当前时间戳。 例如:
退出表格:
|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;
但这将复制并使用旧值创建新表,我希望在表创建过程中添加新列并插入值
请提供帮助。您只需执行一次配置单元,即可运行
配置单元一次性命令
当您需要运行多个查询执行或运行需要较长时间执行的较大查询时,此实用程序非常有用
- 创建一个
myquery.hql
文件,其中所有查询都由分隔然后从hdfsnohup-hive-f/myquery.hql运行
您可以通过访问nohup.out文件继续查看控制台:
tail-f nohup.out
您可以像这样添加新列:
create table newTable AS
select s.*, unix_timestamp(current_timestamp) as creation_date
from existingtable s;
如果需要使用与现有表完全相同的结构定义新表,
然后,Hive使创建新表变得非常容易。
这叫做克隆表,它是使用LIKE子句完成的。
新表将具有与现有表相同的列定义和其他属性,但没有数据。语法是
CREATE TABLE new_table_name LIKE existing_table_name;
CREATE TABLE jobs_archived LIKE jobs;
ALTER TABLE tablename ADD COLUMNS (col1 TYPE1,col2 TYPE2,… );
ALTER TABLE employees ADD COLUMNS (bonus INT);
可以为新表指定一些表属性
通过在CREATETABLE…LIKE语句中包含适当的子句。
例如,可以使用LOCATION和storageas子句。
如果需要更改其他属性,请在创建表后使用ALTER TABLE设置这些属性
之后,如果需要添加更多列,可以使用ALTERTABLE语句
可以使用“添加列”将一列或多列添加到列列表的末尾,
一般语法是
CREATE TABLE new_table_name LIKE existing_table_name;
CREATE TABLE jobs_archived LIKE jobs;
ALTER TABLE tablename ADD COLUMNS (col1 TYPE1,col2 TYPE2,… );
ALTER TABLE employees ADD COLUMNS (bonus INT);
您可以将这些句子包装在JDBC语句中
我希望这能有所帮助。谢谢你的回答。我想从Java执行操作。我没有CLI访问权限。感谢您的回答,获得了一个异常:失败:ParseException,无法识别“选择”unix\u时间戳附近的输入。@mayankbisht修复了!这是额外的select
Yes,现在查询工作正常,但我可以在创建日期内看到所有相同的值。我正在寻找一种身份类型的值。我必须使用该列进行排序。@mayankbisht身份是另一个复杂的主题。不带参数的unix_timestamp()将为您提供不同的时间戳,但它们不是唯一的,它将在不同的容器中并行执行,有时会生成相同的时间戳。如果您想要绝对唯一的标识符-然后使用UUID-它在分布式环境中运行良好。@mayankbisht如果您想要它可排序-类似于bigint ID或timestamp,那么为大数据集生成这样的ID并不容易。例如,您可以使用row\u number over()
生成唯一的ID,但它在单个容器中运行缓慢