【问题标题】:Getting error while creating hive table using "hive -e" but not in hive shell使用“hive -e”创建配置单元表时出错,但在配置单元外壳中没有
【发布时间】:2017-07-09 20:43:31
【问题描述】:

我正在尝试在 HBase 表之上创建配置单元表。使用上述查询。

create external table MaprDB_batch_info_table (Batch_ID string, BatchParserJobId string, count string, CurrentRunTime string) 

ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,BatchInfo:BatchParserJobId,BatchInfo:count,BatchInfo:CurrentRunTime") TBLPROPERTIES ('hbase.table.name' = '/user/all/batchinfo');

此命令在 hive shell 中成功执行,但是当我尝试通过 bash shell 执行时

hive -e "create external table MaprDB_batch_info_table (Batch_ID string, BatchParserJobId string, count string, CurrentRunTime string) 

ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe' STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key,BatchInfo:BatchParserJobId,BatchInfo:count,BatchInfo:CurrentRunTime") TBLPROPERTIES ('hbase.table.name' = '/user/all/batchinfo');

我得到以下错误:

NoViableAltException(26@[]) 在 org.apache.hadoop.hive.ql.parse.HiveParser.tablePropertiesList(HiveParser.java:34375) 在 org.apache.hadoop.hive.ql.parse.HiveParser.tableProperties(HiveParser.java:34243) 在 org.apache.hadoop.hive.ql.parse.HiveParser.tableFileFormat(HiveParser.java:35913) 在 org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:5380) 在 org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:2640) 在 org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:1650) 在 org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1109) 在 org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:202) 在 org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:166) 在 org.apache.hadoop.hive.ql.Driver.compile(Driver.java:397) 在 org.apache.hadoop.hive.ql.Driver.compile(Driver.java:309) 在 org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1146) 在 org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1194) 在 org.apache.hadoop.hive.ql.Driver.run(Driver.java:1083) 在 org.apache.hadoop.hive.ql.Driver.run(Driver.java:1073) 在 org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:213) 在 org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:165) 在 org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:376) 在 org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:311) 在 org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:708) 在 org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:681) 在 org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:621) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:497) 在 org.apache.hadoop.util.RunJar.run(RunJar.java:221) 在 org.apache.hadoop.util.RunJar.main(RunJar.java:136) 失败:ParseException 行 1:473 无法识别“hbase”附近的输入。表属性列表中的“列”

如果有人可以帮助纠正这个问题。

【问题讨论】:

    标签: hadoop hive hiveql


    【解决方案1】:

    将查询中的" 替换为'

    ...('hbase.columns.mapping'=':key,BatchInfo:BatchParserJobId,BatchInfo:count,BatchInfo:CurrentRunTime')...
    

    另外,'hbase.table.name' 的值有问题,请将路径替换为实际的表名。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多