Pig Load with Schema 给出错误

Posted

技术标签:

【中文标题】Pig Load with Schema 给出错误【英文标题】:Pig Load with Schema giving error 【发布时间】:2016-12-24 16:26:17 【问题描述】:

我在 hdfs 上有一个名为 data_tuple_bag.txt 的文件,内容如下:

10,(1,2),(2,3)
11,(4,5),(6,7)

我正在创建如下关系:

D = LOAD '/user/pig_demo/data_tuple_bag.txt' AS (f1:int,B:T:(t1:int,t2:int));

当我 DUMP 时,它给了我 ACCESSING_NON_EXISTENT_FIELD 2 次以及 FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 次和一个空输出。

我将关系更改为:

D = LOAD '/user/pig_demo/data_tuple_bag.txt' USING PigStorage(',') AS (f1:int,B:T:(t1:int,t2:int)); 

现在它只给出 FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 次并输出为:

(10,)
(11,)

我还有另一个文件 data_only_bag.txt,其中包含以下内容:

(1,2),(2,3)
(4,5),(6,7)

关系定义为:

A = LOAD '/user/pig_demo/data_only_bag.txt' AS (B:T:(t1:int,t2:int));

而且它有效。

现在我更新 data_only_bag.txt 如下:

10,(1,2),(2,3)
11,(4,5),(6,7)

关系是:

A = LOAD '/user/pig_demo/data_only_bag.txt' AS (f1:int,B:T:(t1:int,t2:int));

我得到: (,) (,) 当我 DUMP 时,它给了我 ACCESSING_NON_EXISTENT_FIELD 2 次以及 FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 次和一个空输出。

现在我正在更新与:

的关系
A = LOAD '/user/pig_demo/data_only_bag.txt' USING PigStorage(',') AS (f1:int,B:T:(t1:int,t2:int));

现在它只给出 FIELD_DISCARDED_TYPE_CONVERSION_FAILED 2 次并输出为:

(10,)
(11,)

和以前一样。

谁能告诉我我在这里做错了什么?

提前致谢。

【问题讨论】:

【参考方案1】:

使用提供的架构解析输入失败, 试试这个:

D = LOAD '/user/pig_demo/data_tuple_bag.txt' USING PigStorage(',') 
AS (f1:int, B: T1: (t1:int, t2:int),T2: (t1:int, t2:int));

【讨论】:

@AbhilashDK,这正是 Piglatin 中 Bag 的定义。有用吗? 嗨。感谢你的回答。但是一个包可以是一个元组的集合对。当我写 B:T:(t1:int,t2:int) 并且只有像 (1,2),(2,3) (4,5),(6,7) 这样的数据时,它可以工作。但只有当我在第一个 f1 中引入另一个字段时,我才会收到上述错误。 请更新您的问题,并为每个案例添加一个典型的输入文件

以上是关于Pig Load with Schema 给出错误的主要内容,如果未能解决你的问题,请参考以下文章

Pig:使用 .pig_schema 模式文件加载数据

LOAD DATA LOCAL INFILE 给出错误 The used command is not allowed with this MySQL version

Pig:使用外部模式文件加载数据文件

使用 Pig 加载 CSV

Pig 中似乎有啥错误?

PIG 加载 CSV - 地图类型错误