gpt4 book ai didi

java - PIG : Cannot cast java. lang.String to org.apache.avro.util.Utf8 with AvroStorage inside STORE

转载 作者:可可西里 更新时间:2023-11-01 16:15:24 24 4
gpt4 key购买 nike

我正在使用 Apache PIG 来减少最初以 CSV 格式存储的数据,并希望以 Avro 格式输出。我的 PIG 脚本的一部分调用了一个 java UDF,它将一些字段附加到输入元组并将修改后的元组传回。执行此操作时,我正在修改输出、PIG、架构:

Schema outSchema = new Schema(input).getField(1).schema;
Schema recSchema = outSchema.getField(0).schema;
recSchema.add(new FieldSchema("aircrafttype", DataType.CHARARRAY));

在我的 UDF 的 public Sc​​hema outputSchema(Schema input) 方法中。

exec 方法中,我将 java.lang.String 值附加到输入元组,并将编辑后的元组返回到 PIG 脚本。这以及所有后续操作都可以正常工作。如果我使用 PigStorage(',') 输出为 CSV 格式,则没有问题。当我尝试使用

输出时
STORE records INTO '$out_dir' USING org.apache.pig.piggybank.storage.avro.AvroStorage('
{
"schema":{
"type":"record", "name":"my new data",
"fields": [
{"name":"fld1", "type":"long"},
{"name":"fld2", "type":"string"}
]}
}');

我收到以下错误:

java.io.IOException: java.lang.ClassCastException: java.lang.String cannot be cast to org.apache.avro.util.Utf8

我曾尝试将字符字段作为 char[]Utf8 类型附加到元组(在我的 UDF 中),但这让 PIG 在我开始之前就生气了试图写出数据。我还尝试修改我的 Avro 架构以允许每个字段中的空类型。

我正在使用 PIG v0.11.1 和 Avro v1.7.5,非常感谢任何帮助。

最佳答案

这是一个 PIG 版本问题。我的 UDF 内置在一个包含 PIG v0.8.1 的 jar-with-dependencies 中。 PIG 版本 0.8.1 和 0.11.1 的混合导致了问题,AVRO 与它无关。

关于java - PIG : Cannot cast java. lang.String to org.apache.avro.util.Utf8 with AvroStorage inside STORE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22488609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com