【问题标题】:Hive FAILED: ParseException line 2:0 cannot recognize input near ''macaddress'' 'CHAR' '(' in column specificationHive FAILED: ParseException line 2:0 cannot identify input near ''macaddress'' 'CHAR' '(' in column specification
【发布时间】:2018-05-04 01:40:59
【问题描述】:

我试过运行hive -v -f sqlfile.sql

这是文件的内容

CREATE TABLE UpStreamParam (
'macaddress' CHAR(50),
'datats' BIGINT,
'cmtstimestamp' BIGINT,
'modulation' INT,
'chnlidx'   INT,
'severity' BIGINT,
'rxpower'  FLOAT,
'sigqnoise' FLOAT,
'noisedeviation'  FLOAT,
'prefecber'  FLOAT,
'postfecber'  FLOAT,
'txpower'  FLOAT,
'txpowerdrop' FLOAT,
'nmter'  FLOAT,
'premtter'  FLOAT,
'postmtter'  FLOAT,
'unerroreds'  BIGINT,
'corrected'  BIGINT,
'uncorrectables'  BIGINT)
STORED AS ORC TBLPROPERTIES ("orc.compress"="SNAPPY","orc.bloom.filters.columns"="macaddress")
PARTITIONED BY ('cmtsid' CHAR(50),' date' INT)
LOCATION '/usr/hive/warehouse/UpStreamParam' ;

我收到以下错误:

FAILED: ParseException line 2:0 无法识别列规范中 ''macaddress'' 'CHAR' '(' 附近的输入

【问题讨论】:

    标签: hadoop hive hadoop-streaming


    【解决方案1】:

    首先,列名必须用`(反引号)括起来,而不是'(单引号)。

    因此,您必须将'macaddress' 替换为`macaddress`,以及所有其他列名。

    第二,STORED ASTBLPROPERTIESPARTITIONED BYLOCATION的顺序是错误的。 正确的顺序是PARTITIONED BYSTORED ASLOCATIONTBLPROPERTIES

    有关详细信息,请参阅 hive 语言手册。 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-CreateTable

    所以正确的代码是

    CREATE TABLE UpStreamParam (
    `macaddress` CHAR(50),
    `datats` BIGINT,
    `cmtstimestamp` BIGINT,
    `modulation` INT,
    `chnlidx`   INT,
    `severity` BIGINT,
    `rxpower`  FLOAT,
    `sigqnoise` FLOAT,
    `noisedeviation`  FLOAT,
    `prefecber`  FLOAT,
    `postfecber`  FLOAT,
    `txpower`  FLOAT,
    `txpowerdrop` FLOAT,
    `nmter`  FLOAT,
    `premtter`  FLOAT,
    `postmtter`  FLOAT,
    `unerroreds`  BIGINT,
    `corrected`  BIGINT,
    `uncorrectables`  BIGINT)
    PARTITIONED BY (`cmtsid` CHAR(50), `date` INT)
    STORED AS ORC
    LOCATION '/usr/hive/warehouse/UpStreamParam'
    TBLPROPERTIES ("orc.compress"="SNAPPY","orc.bloom.filters.columns"="macaddress");
    

    【讨论】:

    • 感谢它的工作。有没有其他方法访问表而不是每次都使用 hive cli?假设我想集成到我的代码中,所以每次我都需要执行hive -e "my query"
    • @user3502786 您可以在网上搜索关键字,例如“hive client”或“hive webui”cwiki.apache.org/confluence/display/Hive/HiveClient
    • 不加引号(') 它将起作用,而 char(50) 不起作用,我们可以使用字符串代替它们。
    猜你喜欢
    • 2018-06-01
    • 1970-01-01
    • 2017-11-12
    • 2015-07-14
    • 2021-01-24
    • 2019-12-07
    • 2021-04-02
    • 1970-01-01
    • 2023-02-03
    相关资源
    最近更新 更多