【问题标题】:Hive create external tableHive 创建外部表
【发布时间】:2017-03-25 03:15:07
【问题描述】:

我正在尝试在配置单元中创建表,但出现以下错误。谁能帮助我这是什么问题?

CREATE EXTERNAL TABLE IF NOT EXISTS flightInfo2008
(Year INT,
Month INT,
DayofMonth INT,
DayOfWeek INT,
DepTime INT,
CRSDepTime INT,
ArrTime INT,
CRSArrTime INT,
UniqueCarrier STRING,
FlightNum INT,
TailNum STRING,
ActualElapsedTime INT,
CRSElapsedTime INT,
AirTime INT,
ArrDelay INT,
DepDelay INT,
Origin  STRING,
Dest STRING,
Distance INT,
TaxiIn INT,
TaxiOut INT,
Cancelled INT,
CancellationCode INT,
Diverted INT,
CarrierDelay INT,
WeatherDelay INT,
NASDelay INT,
SecurityDelay INT,
LateAircraftDelay INT)
COMMENT 'mydb flightInfo2008'
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ';'
STORED AS TEXTFILE 
LOCATION '/user/hadoop/mydata';

失败:ParseException 第 15:10 行无法识别列类型中“、”“ArrDelay”“INT”附近的输入
蜂巢>

【问题讨论】:

  • 似乎没问题,你可以看看你的脚本,看看你是否看到了一些特殊字符。另外,尝试更改年份和月份的名称,这些名称有 udf,也许 hive 对异常不是很清楚。您使用的是哪个 Hive 版本?
  • 检查 TAB 符号并用空格替换它们
  • @lake 我更改了年份和月份,但仍然无法正常工作,我使用的是 Hive 1.2.1 版本。

标签: hive parseexception


【解决方案1】:

寻找在从记事本复制文本时可能添加的一些特殊字符。

【讨论】:

    【解决方案2】:

    从 hive 运行 CREATE 语句:

    FAILED: ParseException line 33:22 mismatched input '' 期望 StringLiteral 在表行格式的字段分隔符中的 'BY' 附近

    从直线:

    错误:编译语句时出错:FAILED: ParseException line 33:22 mismatched input '' expecting StringLiteral near 'BY' in table row format's field separator (state=42000,code=40000)

    在这两种情况下,问题都出在

    由“;”终止的字段

    应该写成

    由'\;'终止的字段

    在这个修改之后,我从 hive 和 beeline 创建了表。

    Impala-shell 接受两个 ';'和 '\;'并成功创建表。

    但是你的错误信息和我的不一样。所以我同意已经给出的答案,显然问题在于 ArrDelay 附近的不可见特殊字符。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-25
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      相关资源
      最近更新 更多