我正在尝试以此在Hive中创建一个外部表
CREATE EXTERNAL TABLE IF NOT EXISTS 1987(
YEAR INT,
MONTH INT,
DAYOFMONTH INT,
DAYOFWEEK INT,
DEPTIME INT,
CRS INT,
ARRTIME TIME,
CARRIER STRING,
FLIGHTNUM INT,
TAILNUM STRING,
ACTUALELAPSED INT,
CRSELAPSED INT,
AIRTIME INT,
ARRDELAY INT,
DEPDELAY INT,
ORIGIN STRING,
DEST STRING,
DISTANCE INT,
TAXIIN INT,
TAXIOUT INT,
CANCELLED INT,
CANCELLATIONCODE STRING,
DIVERTED INT,
CARRIERDELAY INT,
WEATHERDELAY INT,
NASDELAY INT,
SECURITYDELAY INT,
LATEAIRCRAFT INT,
Origin CHAR(1))
COMMENT 'A??O 1987'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
location '/user/raj_ops/PROYECTO/'1987.csv';
但是出现以下错误:
org.apache.hive.service.cli.HiveSQLException:编译时出错 语句:失败:ParseException行1:36无法识别输入 表名称中'1987''('''YEAR'的附近
有人知道为什么吗? 谢谢:)
答案 0 :(得分:0)
我认为您可能需要对表名进行转义,如果它是数字的话:
connect() {
return new Promise((resolveAll, rejectAll) => {
const rejectTimeout = setTimeout(rejectAll, 5000);
Promise.all([
new Promise(res1 => this._client.on('connected', res1)),
new Promise(res2 => this._client.on('socketConnected', res2))
]).then(() => {
clearTimeout(rejectTimeout);
resolveAll();
});
});
}
答案 1 :(得分:0)
位置值中有一个多余的引号。请将其删除。
location '/user/raj_ops/PROYECTO/'1987.csv';
应该是
location '/user/raj_ops/PROYECTO/1987.csv';
答案 2 :(得分:0)
位置应为'/user/raj_ops/PROYECTO/'
(没有文件本身)。如果您在同一位置有其他文件,则将它们移到单独的位置,例如1987年的/user/raj_ops/PROYECTO/1987/
。因为表可以建立在位置而不是文件的顶部。
表名不能以数字开头。使用反引号1987
或将其重命名为year_1987