DevPerson
DevPerson

Reputation: 137

replace columns in hive

I have created a table in hive, now I am trying to replace the columns name using REPLACE COLUMNS. Alter query is:

**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);**

MismatchedTokenException(26!=301) at org.antlr.runtime.BaseRecognizer.recoverFromMismatchedToken(BaseRecognizer.java:617) at org.antlr.runtime.BaseRecognizer.match(BaseRecognizer.java:115) at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatementSuffixAddCol(HiveParser.java:9898) at org.apache.hadoop.hive.ql.parse.HiveParser.alterTblPartitionStatementSuffix(HiveParser.java:8524) at org.apache.hadoop.hive.ql.parse.HiveParser.alterTableStatementSuffix(HiveParser.java:8139) at org.apache.hadoop.hive.ql.parse.HiveParser.alterStatement(HiveParser.java:7190) at org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2602) at org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1589) at org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1065) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:201) at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:462) at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1276) at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1393) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1205) at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1195) at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:220) at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:172) at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:383) at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:775) at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:693) at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:628) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.apache.hadoop.util.RunJar.run(RunJar.java:221) at org.apache.hadoop.util.RunJar.main(RunJar.java:136) FAILED: ParseException line 2:7 mismatched input 'eid' expecting ) near 'INT' in add column statement

Please help me. I am learning hive

Upvotes: 3

Views: 11054

Answers (2)

parvathi kaladharan
parvathi kaladharan

Reputation: 21

REPLACE is used when you want to have an altogether different columns to your table.If not it is better to rename the column_name with the CHANGE option in the alter statement.

Upvotes: 2

DataWrangler
DataWrangler

Reputation: 2165

The ALTER TABLE <TableName> REPLACE COLUMNS removes all existing columns and adds the new set of columns.

ALTER TABLE <TableName> REPLACE COLUMNS (EID INT, EName STRING);

REPLACE COLUMNS

For your scenario you can make use of ALTER TABLE <TableName> CHANGE <ColumnName>

ALTER TABLE <TableName> CHANGE ID EID INT;

This page will give you a lots of information ALTER COLUMNS

Upvotes: 1

Related Questions