失败:ParseException 行 4:0 无法识别列规范中")""注释"&



我见过很多在SO上存在这种错误的问题,我已经尝试了他们提出的解决方案,但没有一个奏效。

这是我的脚本:

CREATE TABLE default.my_table(
)COMMENT 'V1.0' 
row format delimited fields terminated BY 't' lines terminated BY 'n';

我还有其他没有列的脚本,但执行正常,但不知何故,此脚本在执行时导致错误。任何帮助,不胜感激。提前谢谢。

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

检查配置单元表。它有两列,即使没有在 create 语句中指定任何列。

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

最新更新