Apache Hive:失败:ParseException line 4:1 character '' 此处不支持

问题描述

我正在尝试在 Apache Hive 中创建一个新表,该表从 CSV 文件加载数据。 我写了这个脚本

CREATE SCHEMA IF NOT EXISTS practica2;

CREATE EXTERNAL TABLE IF NOT EXISTS practica2.station_data 
(IDPROVINCIA string,SPROVINCIA string,IDESTACION string,SESTACION string,FECHA string,DIA string,TEMPMAX string,HORMINTEMPMAX string,TEMPMIN string,HORMINTEMPMIN string,TEMPMEDIA string,HUMEDADMAX string,HUMEDADMIN string,HUMEDADMEDIA string,VELVIENTO string,DIRVIENTO string,RADIACION string,PRECIPitacION string) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ';'
STORED AS TEXTFILE
LOCATION 'hdfs://0.0.0.0:9000/user/hive';

但是,当我执行脚本时,出现此错误

Failed: ParseException line 4:1 character '' not supported here

我用另一种替代方法进行了测试,结果相同:

CREATE SCHEMA IF NOT EXISTS practica2;

CREATE TABLE IF NOT EXISTS practica2.station_data 
(IDPROVINCIA string,PRECIPitacION string) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ';';

LOAD DATA LOCAL INPATH './RIA_exportacion_datos_diarios_Huelva_20140206.csv' INTO TABLE practica2.station_data;

完整报告如下:

almu@debian:~/Practicas_BigData/Practica2/Hive$ hive -f practica2.hql 
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/usr/local/hive/lib/log4j-slf4j-impl-2.6.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/usr/local/hadoop/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]

Logging initialized using configuration in jar:file:/usr/local/hive/lib/hive-common-2.3.7.jar!/hive-log4j2.properties Async: true
OK
Time taken: 3.894 seconds
Failed: ParseException line 4:1 character '' not supported here

当我从 Hive 命令行创建表时,它的创建没有问题。但是,当我执行脚本时,它总是失败。

错误在哪里?

更新:关于“;”的建议可能是错误的原因,我像这样替换了这一行:

FIELDS TERMINATED BY ',';

错误仍在继续

解决方法

尝试删除新行?

CREATE SCHEMA IF NOT EXISTS practica2;

CREATE EXTERNAL TABLE IF NOT EXISTS practica2.station_data (IDPROVINCIA string,SPROVINCIA string,IDESTACION string,SESTACION string,FECHA string,DIA string,TEMPMAX string,HORMINTEMPMAX string,TEMPMIN string,HORMINTEMPMIN string,TEMPMEDIA string,HUMEDADMAX string,HUMEDADMIN string,HUMEDADMEDIA string,VELVIENTO string,DIRVIENTO string,RADIACION string,PRECIPITACION string) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ';'
STORED AS TEXTFILE
LOCATION 'hdfs://0.0.0.0:9000/user/hive';

或者您的 sql 文件中可能有全角空间。见this post。如果你想去掉全角空格,手动输入sql文件,避免从其他地方复制/粘贴。