FAILED:ParseException第4:0行无法识别')附近的输入。 ' COMMENT' '' V1.0''在列规范中

时间:2018-05-01 01:18:33

标签: hive

我已经看到很多问题在SO上出现了这种错误,我尝试了他们提出的解决方案,但都没有奏效。

这是我的剧本:

CREATE TABLE default.my_table(

)COMMENT 'V1.0' 
row format delimited fields terminated BY '\t' lines terminated BY '\n';

我有其他没有列的脚本,但是执行得很好,但是这个脚本在执行时会以某种方式导致错误。任何帮助表示赞赏。提前致谢。

1 个答案:

答案 0 :(得分:0)

Hive表应至少有一列。列列表可以显式指定,也可以通过外部模式提供。

对于包含大量列的表,这可能会有所帮助。手动指定每个列是繁琐且容易出错的,并且需要自动填充它们。

此方法以Avro格式说明

示例架构文件my_table.avsc

{
  "type" : "record",
  "name" : "dummy_record",
  "namespace" : "so",
  "doc" : "Test schema",
  "fields" : [ {
    "name" : "column1",
    "type" : [ "null", "string" ],
    "default" : null
  },
  {
    "name" : "column2",
    "type" : [ "null", "string" ],
    "default" : null
  }]
}

将架构文件上传到HDFS

hadoop fs -mkdir /avsc-schemas
hadoop fs -put my_table.avsc /avsc-schemas

创建一个Hive表(不需要在create语句中指定列)

CREATE TABLE default.my_table
COMMENT 'V1.0' 
ROW FORMAT SERDE
  'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
  STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
  OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
  TBLPROPERTIES (
    'avro.schema.url'='hdfs:///avsc-schemas/my_table.avsc');

检查Hive表。它有两列,即使在create statement中没有指定。

desc default.my_table;
col_name    data_type   comment
column1     string
column2     string