Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定如何将字节数组转换为字符串

Posted

技术标签:

【中文标题】Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定如何将字节数组转换为字符串【英文标题】:Pig ERROR 1075: Received a bytearray from the UDF. Cannot determine how to convert the bytearray to string 【发布时间】:2017-02-15 03:42:15 【问题描述】:

我是猪新手。我在数据集中有一些数据,如下所示。

数据:

(U,Y,,,,,,)
(U,U,U,U,W,,,)
(U,U,U,U,U,Y,,)

我需要将其转换为单独的组行,不包括空白字段。

输出应该如下所示

(U,10)
(Y,2)
(W,1)

我已经尝试了下面的代码。

B = foreach data generate FLATTEN(TOBAG(*)) as leads;

在上述语句之后,所有列都转换为具有一个字段的行,我想过滤空白行。所以我使用下面的。

C= FILTER B BY leads != '';

但它给出了以下错误

Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定 如何将字节数组转换为字符串

我什至尝试如下转换为 chararray。

C= FILTER B BY (chararray)leads != '';

但它不起作用。

【问题讨论】:

【参考方案1】:

无需强制转换。这将起作用。在 $0 和 COUNT($0) 分组之后得到输出。

C = FILTER B BY leads is not null;

D = GROUP C BY $0;
E = FOREACH D GENERATE group,COUNT(C);
DUMP E;

【讨论】:

以上是关于Pig ERROR 1075:从 UDF 接收到一个字节数组。无法确定如何将字节数组转换为字符串的主要内容,如果未能解决你的问题,请参考以下文章

Pig UDF 抛出错误 Caught error from UDF: GetCounty, Out of bounds access [1]

Pig 脚本无法注册 UDF

在 pig 中使用 UDF 时出现错误 1070

在 Pig Latin 中加载 UDF 时发生 ClassCastException 错误

Java中的Pig UDF:错误---错误1066:无法打开别名的迭代器

Pig UDF 中的 Java 依赖项