类型转换问题-pig->hcatalog

qvsjd97n  于 2021-06-25  发布在  Pig
关注(0)|答案(3)|浏览(351)

我正在尝试从hcatalog加载表,用数据做一些练习并将其存储到另一个表中。
源表:stage.iboa\u event\u 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:06140[main]info org.apache.pig.tools.pigstats.scriptstate-脚本中使用的pig功能:rank 2013-11-26 13:18:06143[main]info org.apache.pig.newplan.logical.rules.columnprunevisitor-为iboa\u事件\u定义修剪的列:$3、$4、$5 2013-11-26 13:18:06,212[main]error org.apache.pig.tools.grunt.grunt-错误1115:日志文件:/export/home/pig/pig\u 1385463241554.log中的pig架构详细信息中不支持的类型:10
为什么?让我们检查字段类型。

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}

可能是长型造成的错误?但这就是为什么我试着把它转换成int。
有人能帮我解决这个问题吗?
谢谢
棘爪

4ktjp1zp

4ktjp1zp1#

错误消息的关键部分是:

Unsupported type: 10 in Pig's schema

当我有一个 INT 并尝试将其存储在一个表中,其中对应的列是 BIGINT .
对我来说,解决办法是更改表(所以不是pig脚本),之后商店就很顺利了。

nhaq1z21

nhaq1z212#

当我尝试将int值[转换为int后]存储在对应列为bigint的表中时,我也遇到了这个问题。
Hive
int/integer(4字节有符号整数)bigint(8字节有符号整数)
对应于清管器
int有符号32位整数
长符号64位整数
所以我把我的价值投给了long,它解决了我的问题。

juzqafwq

juzqafwq3#

类型10代表整数(参见http://pig.apache.org/docs/r0.11.1/api/constant-values.html#org.apache.pig.data.datatype.integer). pig版本不支持编写int列。
使用bigint作为解决方法。

相关问题