Hive建表报ParseException 无法识别row format demilited输入
报错原因
你的建表语句存在3处语法错误,直接触发解析异常:
- 关键字拼写错误:行格式定义处的
demilited为错误拼写,Hive识别分隔符配置的正确关键字是DELIMITED,拼写错误会导致解析器无法识别后续的行格式配置逻辑,直接抛出无法识别'row' 'format'附近输入的错误。 - 字段定义语法非法:你在字段列表的首尾加了单引号,还把第一个字段
idcliente的开头也加了单引号。Hive中单引号仅用于包裹字符串常量,不能用来包裹字段名、字段类型组成的结构定义,这会导致表结构段解析逻辑混乱。 - 分隔符配置存在潜在问题:
FIELDS TERMINATED BY后指定的分隔符为,(逗号后带空格),如果你的源数据是标准逗号分隔、字段值前没有空格,后续加载数据会出现字段错位、NULL值异常的问题。
修改方案
按以下规则调整语句即可正常建表:
- 修正拼写错误,把错写的
demilited替换为正确关键字DELIMITED(SQL关键字不区分大小写,但拼写必须完全准确)。 - 删除字段列表首尾多余的单引号,去掉
idcliente前错误添加的单引号,还原标准的字段定义格式。 - 结合源数据的实际分隔格式调整分隔符配置,如果是纯逗号分隔的文本文件,把分隔符改为
','即可。 - (可选建议)外部表建议显式添加
LOCATION参数指定源数据存储的HDFS路径,避免文件落到Hive默认仓库路径不符合业务预期。
修改后可直接执行的建表语句
CREATE EXTERNAL TABLE CLIENTES ( idcliente int, cnh string, cpf string, validacnh date, nome string, datacadastro date, datanascimento date, telefone string, status string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE; -- 如需指定外部数据路径,添加以下配置替换为实际路径即可 -- LOCATION '/your/hdfs/path/to/clientes_data';
内容的提问来源于stack exchange,提问作者PythonPy
相关产品推荐
相关产品推荐

