Hi Chenglong, I feel that something went wrong during the table creation before Kylin imports it because more than 1 columns' types were changed. Can you "desc" the table you created in Hive to verify the schema?
在 2017年10月18日 下午2:22,付成龙 <[email protected]>写道: > Hello Shuangyin > > > I use apache-kylin-2.0.0-bin before . > when I upgrade apache-kylin-2.0.0-bin to apache-kylin-2.1.0-bin-cdh57 > then this problem was Appeared. > > > so I rollback to apache-kylin-2.0.0-bin : > > > 1.delete hbase table : > kylin_metadata > kylin_metadata_acl > kylin_metadata_user > > > 2.delete hive database of kylin > > > 3.delete hdfs workpath of kylin > > > 4.restart kylin of apache-kylin-2.0.0-bin > > > but The problem was still there. > > > the Following is create sql of NSL_FACT_APP_INFO > > > CREATE TABLE `BDWH_NSL.NSL_FACT_APP_INFO`( > `app_code` varchar(30) COMMENT '申请单编号 ', > `proppser_id` varchar(255) COMMENT '申请人标识号 ', > `car_id` varchar(10) COMMENT '车辆标识号 ', > `dealer_code` int COMMENT '经销商门店编码 ', > `dealer_name` varchar(100) COMMENT '经销商门店名称', > `company_code` int COMMENT '经销商单位编码 ', > `company_name` varchar(100) COMMENT '经销商单位名称', > `product_code` int COMMENT '所选贷款产品标识号 ', > `product_name` varchar(100) COMMENT '所选贷款产品名称 ', > `flow_seq` int COMMENT '审批流程标识号 ', > `flow_seq_name` varchar(20) COMMENT '审批流程名称', > `extend_id` varchar(10) COMMENT '延保ID ', > `is_old` char(1) COMMENT '是否二手车 ', > `is_lcv` char(1) COMMENT '是否LCV', > `is_gps` char(1) COMMENT '是否安装GPS', > `status` varchar(3) COMMENT '审批流程阶段', > `cancel_type` varchar(20) COMMENT '取消/拒绝/退回类型', > `cancel_reason` varchar(200) COMMENT '取消/拒绝/退回原因 ', > `loan_remarks` varchar(1000) COMMENT '信贷员审批备注', > `remarks` varchar(100) COMMENT '补充说明', > `is_pre_interest` char(1) COMMENT '是否前置总利息', > `gps_fee` decimal(10,2) COMMENT 'GPS费用(元) ', > `is_gps_loan` char(1) COMMENT 'GPS费用是否贷款 ', > `a_secure_fee` decimal(10,2) COMMENT '申请保险贷款金额 ', > `a_carloan_amount` decimal(10,2) COMMENT '车贷贷款金额(元) ', > `a_loan_amount` decimal(10,2) COMMENT '申请总贷款金额(元) ', > `a_init_payment` decimal(10,2) COMMENT '申请首付款 ', > `a_init_scale` decimal(5,2) COMMENT '申请首付款比例 ', > `a_loan_periods` tinyint COMMENT '申请还款期限(月) ', > `a_account_fee` decimal(10,2) COMMENT '申请账户管理费 ', > `a_com_rate` decimal(5,2) COMMENT '申请融手续费率 ', > `a_yanbao_fee` decimal(10,2) COMMENT '申请第二年保险费 ', > `a_com_fee` decimal(10,2) COMMENT '申请平台费 ', > `a_yanbao_tc` int COMMENT '延保费套餐 ', > `a_yanbao_tc_name` varchar(100) COMMENT '延保费套餐中文名 ', > `disa_rate` decimal(5,2) COMMENT '贴息后利率 ', > `discount_e` decimal(10,2) COMMENT '规则贴息金额 ', > `a_discount_true_e` decimal(10,2) COMMENT '申请实际贴息金额 ', > `a_loan_rate` decimal(5,2) COMMENT '申请贷款年利率(%) ', > `a_rate_level` varchar(100) COMMENT '申请利率档位 ', > `a_gross_interest` decimal(10,2) COMMENT '申请前置总利息 ', > `a_extend_cost` decimal(10,2) COMMENT '申请延保金额 ', > `r_loan_amount` decimal(10,2) COMMENT '批复总贷款金额(元) ', > `r_init_payment` decimal(10,2) COMMENT '批复首付款 ', > `r_init_scale` decimal(5,2) COMMENT '批复首付款比例 ', > `r_loan_periods` tinyint COMMENT '批复还款期限(月) ', > `r_loan_rate` decimal(5,2) COMMENT '批复贷款年利率(%) ', > `pre_loan_rate` decimal(5,2) COMMENT '批复原始利率 ', > `r_rate_level` varchar(100) COMMENT '批复利率档位 ', > `r_gps_fee` decimal(10,2) COMMENT '批复GPS费用 ', > `r_secure_fee` decimal(10,2) COMMENT '批复保险贷款金额 ', > `r_discount_true_e` decimal(10,2) COMMENT '批复实际贴息金额 ', > `r_account_fee` decimal(10,2) COMMENT '批复账户管理费 ', > `r_carloan_amount` decimal(10,2) COMMENT '批复车辆贷款金额 ', > `r_gross_interest` decimal(10,2) COMMENT '批复前置总利息 ', > `r_extend_cost` decimal(10,2) COMMENT '批复延保费 ', > `r_yanbao_fee` decimal(10,2) COMMENT '批复第二年保险费 ', > `r_com_fee` decimal(10,2) COMMENT '批复平台费 ', > `rep_account_bank` varchar(100) COMMENT '还款借记卡开户行 ', > `rep_account_no` varchar(50) COMMENT '还款借记卡卡号 ', > `rep_account_mobile` varchar(50) COMMENT '还款借记卡留手机号 ', > `rep_account_name` varchar(50) COMMENT '还款借记卡户名 ', > `rep_account_idno` varchar(50) COMMENT '还款卡证件号码 ', > `is_check_account` char(1) COMMENT '还款卡是否已验证 ', > `aloan_arrive` varchar(20) COMMENT '贷后原件收到状态 ', > `is_defer_mortgage` char(1) COMMENT '是否延后抵押', > `sysa_date` timestamp COMMENT '系统审批日期 ', > `sysa_status` char(1) COMMENT '系统审批状态 ', > `sysa_result` char(1) COMMENT '系统审批结果类型 ', > `ch_approval_status` char(1) COMMENT '渠道审批状态', > `post_loan_status` char(2) COMMENT '贷后资料上传状态', > `loan_file_status` char(2) COMMENT '放款文件状态 ', > `yy_risk_remarks` varchar(1000) COMMENT '有用风控结果 ', > `yy_pre_risk_remarks` varchar(1000) COMMENT '有用前置秒拒备注 ', > `yy_workflow_queue` varchar(30) COMMENT '有用审批流程', > `yy_send_appr` varchar(2) COMMENT '复审是否发送有用', > `is_credit_report` char(1) COMMENT '是否有信贷报告 ', > `is_credit` char(1) COMMENT '是否自带征信 ', > `is_print_w` char(1) COMMENT '是否打印配偶 ', > `is_house` char(1) COMMENT '是否提供房产证明 ', > `loan_record` char(2) COMMENT '有无信贷记录 ', > `app_score` decimal(5,2) COMMENT '申请评分 ', > `notarization_fee` decimal(10,2) COMMENT '公证费', > `is_company_license` char(1) COMMENT '是否公牌', > `is_end_contract` char(1) COMMENT '电子签约状态', > `ht_source` char(1) COMMENT '活体来源', > `is_end_ht` char(1) COMMENT '是否结束活体检验', > `assign` char(1) COMMENT '是否指派', > `quick_audit_sign` char(1) COMMENT '普通订单转快审标记', > `is_quick_audit` char(1) COMMENT '是否快速审批订单', > `is_vip_contract` char(1) COMMENT '是否VIP合同', > `is_auth_yh` char(1) COMMENT '是否授权央行征信查询', > `batch_pay_flag` varchar(10) COMMENT '批次放款处理结果', > `belong_dealer_id` int COMMENT '所属车商ID', > `belong_dealer` varchar(100) COMMENT '所属车商', > `belong_sale_id` int COMMENT '所属销售ID', > `belong_sale` varchar(30) COMMENT '所属销售', > `belong_sale_idno` varchar(30) COMMENT '所属销售_身份证', > `belong_sale_manager_id` int COMMENT '所属销售主管ID', > `belong_sale_manager` varchar(30) COMMENT '所属销售主管', > `belong_sale_manager_idno` varchar(30) COMMENT '所属销售主管_身份证', > `belong_market_id` int COMMENT '所属市场ID', > `belong_market` varchar(100) COMMENT '所属市场', > `belong_operation_id` int COMMENT '所属运营ID', > `belong_operation` varchar(30) COMMENT '所属运营', > `belong_operation_idno` varchar(30) COMMENT '所属运营_身份证', > `belong_sale_tel` varchar(30) COMMENT '所属销售电话 ', > `app_time` timestamp COMMENT '申请提交日期 ', > `manage_approval_time` timestamp COMMENT '信贷经理审批日期 ', > `first_app_time` timestamp COMMENT '第一次提交时间 ', > `first_loan_time` timestamp COMMENT '第一次放款时间 仅多次放款申请单有值', > `loan_time` timestamp COMMENT '放款日期 ', > `is_prepay` char(1) COMMENT '是否垫资', > `prepay_date` timestamp COMMENT '垫资回款日期 ', > `auth_ch` varchar(100) COMMENT '客户鉴权渠道', > `model_ids` varchar(100) COMMENT '已签合同模板 ', > `pled_model_id` varchar(100) COMMENT '抵押合同模板 ', > `date_ch` timestamp COMMENT '渠道时间 ', > `payment_ch_zn` varchar(30) COMMENT '放款渠道中文名 ', > `payment_ch_en` varchar(30) COMMENT '渠道英文名 ', > `payment_ch` varchar(20) COMMENT '放款渠道 ', > `file_number` varchar(20) COMMENT '档案编号 ', > `ip_addr` varchar(50) COMMENT 'IP地址 ', > `lat` varchar(50) COMMENT '维度 ', > `lng` varchar(50) COMMENT '经度 ', > `imei` varchar(50) COMMENT '国际移动设备身份码 ', > `imsi` varchar(50) COMMENT '国际移动用户识别码 ', > `uuid` varchar(50) COMMENT 'iphone的uuid ', > `user_id` int COMMENT '创建用户编码 ', > `user_name` varchar(20) COMMENT '创建用户名称 ', > `data_idn` char(1) COMMENT '数据标示 C-渠道,D-直销', > `source_type` varchar(20) COMMENT '源系统 ', > `lst_up_time` timestamp COMMENT '上一次更新日期 ') > COMMENT '车贷申请单信息' > PARTITIONED BY ( > `data_date` date COMMENT '数据日期 ') > ROW FORMAT SERDE > 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' > WITH SERDEPROPERTIES ( > 'field.delim'='\u0007', > 'serialization.format'='\u0007') > STORED AS INPUTFORMAT > 'org.apache.hadoop.mapred.TextInputFormat' > OUTPUTFORMAT > 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' > LOCATION > 'hdfs://nameservice1/user/dmp/prod/v2/NSL/NSL_FACT_APP_INFO' > TBLPROPERTIES ( > 'transient_lastDdlTime'='1507710993') > > > thanks > > > > > > > > > > > > ------------------ Original ------------------ > From: "Shuangyin Ge"<[email protected]>; > Date: Wed, Oct 18, 2017 01:43 PM > To: "dev"<[email protected]>; > > Subject: Re: kylin导入hive字段类型变化问题 > > > Hello Chenglong, > > I tried to reproduce this CHAR type length change after importing from Hive > issue on Kylin 2.1 but I cannot reproduce it. Can you please let me know > your Kylin version and the complete DDL you used to create these tables? > > 在 2017年10月18日 上午11:34,chenglong.fu <[email protected]>写道: > > > > > > > hello everyone: > > > > > > > > 因为之前附件没有转发和图片太大显示不全,我重新发送一封邮件,打扰见谅。 > > > > 我在使用kylin的时候遇到了字段类型变化导致的问题,所有想寻求一下大家的帮助。 > > > > 问题的描述: > > > > 1. hive表导入kylin后字段类型发生变化 > > > > > > > > hive 中NSL_DIM_PROPPSER_INFO原表类型(截取部分):、 > > > > 75 > > > > is_scene > > > > char(2) > > > > 客户是否在现场 > > > > 76 > > > > reference_code > > > > varchar(50) > > > > 推荐人代码 > > > > 77 > > > > reference_jgcode > > > > varchar(50) > > > > 推荐人机构代码 > > > > 78 > > > > applicationagreementbarcode > > > > varchar(50) > > > > 领用合约代码 > > > > 79 > > > > remakes > > > > varchar(1000) > > > > 备注信息 > > > > 80 > > > > data_idn > > > > char(1) > > > > 数据标示C-渠道,D-直销 > > > > 81 > > > > source_type > > > > varchar(20) > > > > 源系统 > > > > 82 > > > > lst_up_time > > > > timestamp > > > > 上一次更新日期 > > > > 83 > > > > data_date > > > > date > > > > 数据日期 > > > > > > > > 导入kylin后显示的类型:Table Schema:NSL_DIM_PROPPSER_INFO > > > > > > > > 62 > > > > IS_CERT_ALL > > > > char(256) > > > > 2 > > > > 63 > > > > IS_SCENE > > > > char(256) > > > > 4 > > > > 客户是否在现场 > > > > 64 > > > > REFERENCE_CODE > > > > varchar(256) > > > > 33 > > > > 推荐人代码 > > > > 65 > > > > REFERENCE_JGCODE > > > > varchar(256) > > > > 16 > > > > 推荐人机构代码 > > > > 66 > > > > APPLICATIONAGREEMENTBARCODE > > > > varchar(256) > > > > 12504 > > > > 领用合约代码 > > > > 67 > > > > REMAKES > > > > varchar(256) > > > > 2 > > > > 备注信息 > > > > 68 > > > > DATA_IDN > > > > char(256) > > > > 2 > > > > 数据标示C-渠道,D-直销 > > > > 69 > > > > SOURCE_TYPE > > > > varchar(256) > > > > 2 > > > > 源系统 > > > > 70 > > > > LST_UP_TIME > > > > timestamp > > > > 1 > > > > 上一次更新日期 > > > > 71 > > > > DATA_DATE > > > > date > > > > 1 > > > > 数据日期 > > > > > > > > > > > > Hive中NSL_FACT_APP_INFO 类型(部分) > > > > > > > > 124 > > > > lat > > > > varchar(50) > > > > 维度 > > > > 125 > > > > lng > > > > varchar(50) > > > > 经度 > > > > 126 > > > > imei > > > > varchar(50) > > > > 国际移动设备身份码 > > > > 127 > > > > imsi > > > > varchar(50) > > > > 国际移动用户识别码 > > > > 128 > > > > uuid > > > > varchar(50) > > > > iphone的uuid > > > > 129 > > > > user_id > > > > int > > > > 创建用户编码 > > > > 130 > > > > user_name > > > > varchar(20) > > > > 创建用户名称 > > > > 131 > > > > data_idn > > > > char(1) > > > > 数据标示 C-渠道,D-直销 > > > > 132 > > > > source_type > > > > varchar(20) > > > > 源系统 > > > > 133 > > > > lst_up_time > > > > timestamp > > > > 上一次更新日期 > > > > 134 > > > > data_date > > > > date > > > > 数据日期 > > > > > > > > > > > > Kylin中 Table Schema:NSL_FACT_APP_INFO > > > > > > > > 124 > > > > LAT > > > > varchar(256) > > > > 69144 > > > > 维度 > > > > 125 > > > > LNG > > > > varchar(256) > > > > 76679 > > > > 经度 > > > > 126 > > > > IMEI > > > > varchar(256) > > > > 3918 > > > > 国际移动设备身份码 > > > > 127 > > > > IMSI > > > > varchar(256) > > > > 2 > > > > 国际移动用户识别码 > > > > 128 > > > > UUID > > > > varchar(256) > > > > 2 > > > > iphone的uuid > > > > 129 > > > > USER_ID > > > > integer > > > > 1473 > > > > 创建用户编码 > > > > 130 > > > > USER_NAME > > > > varchar(256) > > > > 1667 > > > > 创建用户名称 > > > > 131 > > > > DATA_IDN > > > > char(256) > > > > 2 > > > > 数据标示 C-渠道,D-直销 > > > > 132 > > > > SOURCE_TYPE > > > > varchar(256) > > > > 3 > > > > 源系统 > > > > 133 > > > > LST_UP_TIME > > > > timestamp > > > > 1 > > > > 上一次更新日期 > > > > 134 > > > > DATA_DATE > > > > date > > > > 1 > > > > 数据日期 > > > > > > > > 2. 因为字段发生变化导致 Create Intermediate Flat Hive Table 失败 > > > > 上面的2张表在model中关联关系 > > > > NSL_FACT_APP_INFO.DATA_IDN = NSL_DIM_PROPPSER_INFO.DATA_IDN > > > > NSL_FACT_APP_INFO.PROPPSER_ID = NSL_DIM_PROPPSER_INFO.PROPPSER_ID > > > > > > > > 构建cube的时候,在Create Intermediate Flat Hive Table 时候报 > > > > > > > > INFO : OK > > > > No rows affected (0.137 seconds) > > > > 0: jdbc:hive2://10.8.49.171:10000> CREATE EXTERNAL TABLE IF NOT EXISTS > kylin_intermediate_nsl_cube_cd1448f2_0b32_48bc_a4fb_3be505b5c135 > > > > . . . . . . . . . . . . . . . . .> ( > > > > . . . . . . . . . . . . . . . . .> NSL_FACT_APP_INFO_DATA_IDN char(256) > > > > . . . . . . . . . . . . . . . . .> ,NSL_FACT_APP_INFO_PROPPSER_ID string > > > > . . . . . . . . . . . . . . . . .> ,NSL_FACT_APP_INFO_A_SECURE_FEE > decimal(19,4) > > > > . . . . . . . . . . . . . . . . .> ,NSL_FACT_APP_INFO_A_INIT_PAYMENT > decimal(19, > > > > 4) > > > > . . . . . . . . . . . . . . . . .> ) > > > > . . . . . . . . . . . . . . . . .> STORED AS SEQUENCEFILE > > > > . . . . . . . . . . . . . . . . .> LOCATION > 'hdfs:///user/dmp/kylin/kylin_metada > > > > ta/kylin-c5e7ed64-d408-4804-b4a0-2efb1192b099/kylin_ > intermediate_nsl_cube_cd1448 > > > > f2_0b32_48bc_a4fb_3be505b5c135'; > > > > Error: Error while compiling statement: FAILED: RuntimeException Char > length 256 out of allowed range [1, 255] (state=42000,code=40000) > > > > > > > > Hive 表中的DATA_IDN是char(1) 导入kylin 显示char(256) 报错 Char length 256 out of > > allowed range [1, 255] > > > > > > > > > > > > > > > > > > > > 3. 选择度量的时候因为字段类型导致 mapreduce 构建cubid 任务失败 > > > > 在创建Measure的时候 Return Type的时候是自动根据前面kylin中表的字段类型自动生成 > 的,又不能修改,所以在后面跑mapreduce > > 的时候当这个 度量列聚合量很大的时候就超出这个字段类型长度。任务就会失败。 > > > > > > > > 谢谢 > > > > > >
