Hi,

Can you show the Hive Sql in Kylin.log when cube building?

BR
PENG Zhengshuai

> On Mar 5, 2019, at 3:25 PM, 奥威软件 <3513797...@qq.com> wrote:
> 
> Hi,
> hive表数据源: 当hive的table中某列名含有中文,build cube 会报错
> kylin2.6.0 hadoop3
> 错误如下:
> 
> 
> NoViableAltException(24@[])   at 
> org.apache.hadoop.hive.ql.parse.HiveParser.type(HiveParser.java:36813)       
> at org.apache.hadoop.hive.ql.parse.HiveParser.colType(HiveParser.java:36595)  
>   at 
> org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeConstraint(HiveParser.java:34322)
>    at 
> org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrConstraint(HiveParser.java:34075)
>          at 
> org.apache.hadoop.hive.ql.parse.HiveParser.columnNameTypeOrConstraintList(HiveParser.java:29819)
>      at 
> org.apache.hadoop.hive.ql.parse.HiveParser.createTableStatement(HiveParser.java:6662)
>         at 
> org.apache.hadoop.hive.ql.parse.HiveParser.ddlStatement(HiveParser.java:4295) 
>        at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2494)
>        at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1420)   
> at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:220)    
>   at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:74)     
>     at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:67)   
>       at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:616)    at 
> org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1826)   at 
> org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1773)         
> at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:1768)       
>   at 
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126)
>        at 
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:214)     
> at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239)   
>   at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:188)  at 
> org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:402)         
> at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:335)       
>   at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:787)   
>     at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:759)         
> at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:683)        at 
> sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)  at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
>        at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>         at java.lang.reflect.Method.invoke(Method.java:498)     at 
> org.apache.hadoop.util.RunJar.run(RunJar.java:318)   at 
> org.apache.hadoop.util.RunJar.main(RunJar.java:232) FAILED: ParseException 
> line 4:19 cannot recognize input near 'ID' 'int' ',' in column type The 
> command is:  hive -e "USE default; DROP TABLE IF EXISTS 
> kylin_intermediate_ch_cube_5cc15555_a6f3_f9f8_b90a_3e52abe0760b; CREATE 
> EXTERNAL TABLE IF NOT EXISTS 
> kylin_intermediate_ch_cube_5cc15555_a6f3_f9f8_b90a_3e52abe0760b ( 
> ICSTOCKBILL_1W_C_门店ID int ,ICSTOCKBILL_1W_C_客户ID int ,ICSTOCKBILL_1W_C_时间 
> timestamp ,ICSTOCKBILL_1W_C_商品ID int ,GOODS_C_商品ID int ,GOODS_C_品类ID int 
> ,DEPARTMENT_C_门店ID int ,DEPARTMENT_C_区域ID int ,GOODSCLASS_C_品类ID int 
> ,DEPARTMENTCLASS_C_区域ID int ,ICSTOCKBILL_1W_C_数量 int ,ICSTOCKBILL_1W_C_进货价 
> decimal(20,3) ,ICSTOCKBILL_1W_C_总售价 decimal(20,3) ,ICSTOCKBILL_1W_C_售价 
> decimal(20,3) ,ICSTOCKBILL_1W_C_总成本 decimal(20,3) ) STORED AS SEQUENCEFILE 
> LOCATION 
> 'hdfs://kylincluster/kylin/kylin_metadata/kylin-6613a735-0452-1bd5-aa22-e63013366c2a/kylin_intermediate_ch_cube_5cc15555_a6f3_f9f8_b90a_3e52abe0760b';
> 是kylin生成的语句缺少了 单反引号 `。
> 
> 
> 手动给每个表名添加单反引号 `,然后执行上述sql命令,是正常的。
> 正常的sql语句如下:
> CREATE EXTERNAL TABLE IF NOT EXISTS 
> kylin_intermediate_ch_cube_5cc15555_a6f3_f9f8_b90a_3e52abe0760b
> (
> `ICSTOCKBILL_1W_C_mdID` int
> ,`ICSTOCKBILL_1W_C_khID` int
> ,`ICSTOCKBILL_1W_C_sj` timestamp
> ,`ICSTOCKBILL_1W_C_spID` int
> ,`GOODS_C_spID` int
> ,`GOODS_C_plID` int
> ,`DEPARTMENT_C_mdID` int
> ,`DEPARTMENT_C_qyuID` int
> ,`GOODSCLASS_C_plID` int
> ,`DEPARTMENTCLASS_C_quyID` int
> ,`ICSTOCKBILL_1W_C_shul` int
> ,`ICSTOCKBILL_1W_C_jhj` decimal(20,3)
> ,`ICSTOCKBILL_1W_C_zsj` decimal(20,3)
> ,`ICSTOCKBILL_1W_C_sj` decimal(20,3)
> ,`ICSTOCKBILL_1W_C_zcb` decimal(20,3)
> )
> STORED AS SEQUENCEFILE;
> 
> 
> 
> 请帮忙看下怎么解决,谢谢!
> 
> 
> Best regards
> -- 
> Regards!
> Aron Tao

Reply via email to