Mat*_*ttD 8 hadoop hive hdinsight
我想在表中添加一个新列,但前提是该列尚不存在.
如果列不存在,则此方法有效:
ALTER TABLE MyTable ADD COLUMNS (mycolumn string);
Run Code Online (Sandbox Code Playgroud)
但是当我第二次执行它时,我收到一个错误.
Column 'mycolumn' exists
Run Code Online (Sandbox Code Playgroud)
当我尝试使用CREATE TABLE和ADD PARTITION支持的"IF NOT EXISTS"语法时,出现语法错误:
ALTER TABLE MyTable ADD IF NOT EXISTS COLUMNS (mycolumn string);
FAILED: ParseException line 3:42 required (...)+ loop did not match anything at input 'COLUMNS' in add partition statement
Run Code Online (Sandbox Code Playgroud)
我需要的是可以迭代执行的东西,所以我可以运行我的查询是否存在此列.
您可以通过设置hive.cli.errors.ignore
标志来部分解决它。在这种情况下,即使在途中的查询失败时,配置单元CLI也会强制执行进一步的查询。
在此示例中:
SET hive.cli.errors.ignore=true;
ALTER TABLE MyTable ADD COLUMNS (mycolumn string);
ALTER TABLE MyTable ADD COLUMNS (mycolumn string);
ALTER TABLE MyTable ADD COLUMNS (mycolumn2 string);
Run Code Online (Sandbox Code Playgroud)
即使第二个查询中有错误,hive也会执行所有查询。
归档时间: |
|
查看次数: |
4650 次 |
最近记录: |