类型转换的问题 - 猪 - > HCatalog

时间:2013-11-26 12:30:22

标签: load apache-pig hcatalog

我正在尝试从HCatalog中加载表格,对数据进行一些练习并将其存储到另一个表格中。

源表:stage.iboa_event_definitions

inno_description  string    
inno_id           double    
inno_name     string    
inno_url      string    
inno_valid_from   string    
inno_valid_to     string

目的地表:

create table dictionary (id int,src_id double,source_code string, src_code string,     src_description string, group_code string);

我的剧本:

iboa_event_definitions = LOAD 'stage.iboa_event_definitions' USING org.apache.hcatalog.pig.HCatLoader();
iboa_event_definitions_filter = foreach iboa_event_definitions generate inno_id as src_id, 'IBOA' as source_code, inno_name as src_code, inno_description as src_description, '' as group_code;
iboa_event_definitions_filter_id = RANK iboa_event_definitions_filter;
final_table = foreach iboa_event_definitions_filter_id generate rank_iboa_event_definitions_filter as id:int, src_id, source_code as source_code, src_code, 
src_description, group_code;
store final_table into 'dictionary' using org.apache.hcatalog.pig.HCatStorer();

我得到错误:

  

2013-11-26 13:18:06,140 [主要] INFO   org.apache.pig.tools.pigstats.ScriptState - 使用的Pig功能   脚本:RANK 2013-11-26 13:18:06,143 [主要]信息   org.apache.pig.newplan.logical.rules.ColumnPruneVisitor - 列   为iboa_event_definitions修剪:3美元,4美元,5美元2013-11-26 13:18:06,212   [主要] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1115:   不支持的类型:Pig的架构中的10 日志文件中的详细信息:/export/home/pig/pig_1385463241554.log

为什么呢? 让我们检查字段类型。

describe iboa_event_definitions_filter_id;
iboa_event_definitions_filter_id: {rank_iboa_event_definitions_filter: long,src_id: double,source_code: chararray,src_code: chararray,src_description: chararray,group_code: chararray}

describe final_table;
final_table: {id: int,src_id: double,source_code: chararray,src_code: chararray,src_description: chararray,group_code: chararray}

可能错误是由Long类型引起的?但这就是我尝试将其转换为int的原因。

任何人都可以帮我解决这个问题吗?

由于

的Pawel

3 个答案:

答案 0 :(得分:2)

错误消息的关键部分是:

Unsupported type: 10 in Pig's schema

当我有一个INT并试图将其存储在一个表中,其中相应的列为BIGINT时,就会发生这种情况。

我的解决方案是更改表格(所以不是Pig脚本),之后商店进展顺利。

答案 1 :(得分:0)

类型10代表整数(参见http://pig.apache.org/docs/r0.11.1/api/constant-values.html#org.apache.pig.data.DataType.INTEGER)。 您的猪版本不支持编写INT列。

使用BIGINT作为解决方法。

答案 2 :(得分:0)

在尝试在相应列为BIGINT的表中存储int值[在转换为int之后]时,我也遇到了这个问题。

<强> HIVE

INT / INTEGER(4字节有符号整数) BIGINT(8字节有符号整数)

对应猪

int有符号32位整数

长签名64位整数

所以我将我的价值投入,它解决了我的问题。