我已经在配置单元中创建了一个表,现在我正在尝试使用replace columns替换列名。alter查询是:
**ALTER TABLE emp1 REPLACE COLUMNS (
id INT eid int,
name STRING ename string,
sal INT esal int,
city string ecity string,
country string ecountry string);**
不匹配的TokenException(26=301)在org.antlr.runtime.baserecognizer.recoverfrommaschedtoken(baserecognizer。java:617)在org.antlr.runtime.baserecognizer.match(baserecognizer。java:115)在org.apache.hadoop.hive.ql.parse.hiveparser.alterstatementsuffixaddcol(hiveparser)上。java:9898)在org.apache.hadoop.hive.ql.parse.hiveparser.altertblpartitionstatementsuffix(hiveparser。java:8524)在org.apache.hadoop.hive.ql.parse.hiveparser.altertablestatementsuffix(hiveparser)上。java:8139)在org.apache.hadoop.hive.ql.parse.hiveparser.alterstatement(hiveparser.org.apache.hadoop.hive.ql.parse.hiveparser.alterstatement)上。java:7190)在org.apache.hadoop.hive.ql.parse.hiveparser.ddlstatement(hiveparser。java:2602)在org.apache.hadoop.hive.ql.parse.hiveparser.execstatement(hiveparser。java:1589)在org.apache.hadoop.hive.ql.parse.hiveparser.statement(hiveparser。java:1065)在org.apache.hadoop.hive.ql.parse.parsedriver.parse(parsedriver。java:201)在org.apache.hadoop.hive.ql.parse.parsedriver.parse(parsedriver。java:166)在org.apache.hadoop.hive.ql.driver.compile(driver。java:462)位于org.apache.hadoop.hive.ql.driver.compileinternal(驱动程序。java:1276)在org.apache.hadoop.hive.ql.driver.runinternal(driver。java:1393)在org.apache.hadoop.hive.ql.driver.run(driver。java:1205)在org.apache.hadoop.hive.ql.driver.run(驱动程序。java:1195)在org.apache.hadoop.hive.cli.clidriver.processlocalcmd(clidriver。java:220)在org.apache.hadoop.hive.cli.clidriver.processcmd(clidriver。java:172)在org.apache.hadoop.hive.cli.clidriver.processline(clidriver。java:383)在org.apache.hadoop.hive.cli.clidriver.executedriver(clidriver。java:775) 在org.apache.hadoop.hive.cli.clidriver.run(clidriver。java:693)位于org.apache.hadoop.hive.cli.clidriver.main(clidriver。java:628)在sun.reflect.nativemethodaccessorimpl.invoke0(本机方法)在sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl)。java:57)在sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl。java:43)在java.lang.reflect.method.invoke(方法。java:606)在org.apache.hadoop.util.runjar.run(runjar。java:221)在org.apache.hadoop.util.runjar.main(runjar。java:136)失败:parseexception行2:7在add column语句中的“int”附近有不匹配的输入(应为“eid”)
请帮帮我。我在学Hive
2条答案
按热度按时间sbtkgmzw1#
如果希望表中有完全不同的列,则使用replace。否则,最好在alter语句中使用change选项重命名列名称。
2w3kk1z52#
这个
ALTER TABLE <TableName> REPLACE COLUMNS
删除所有现有列并添加新的列集。ALTER TABLE <TableName> REPLACE COLUMNS (EID INT, EName STRING);
替换列对于您的场景,您可以利用
ALTER TABLE CHANGE
ALTER TABLE <TableName> CHANGE ID EID INT;
这个页面会给你很多信息