web-dev-qa-db-ja.com

ハイブが失敗しました:ParseException行2:0は、列指定の '' macaddress '' 'CHAR' '('の近くの入力を認識できません

実行してみました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' ;

そして、私は次のエラーを受け取ります:

失敗:ParseException行2:0は、列指定の '' macaddress '' 'CHAR' '('の近くの入力を認識できません

5
Alex Brodov

まず、列名は`(一重引用符)ではなく'(バッククォート)で囲む必要があります。

したがって、'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");
11
ymonad

問題は、Hiveバージョン(CHARデータ型がHiveバージョン0.13からサポートされている)が原因である可能性があります。

以前のバージョンを使用している場合は、string/varchar データ・タイプ。

参照してください https://cwiki.Apache.org/confluence/display/Hive/LanguageManual+Types#LanguageManualTypes-Char

0
sureshsiva