尝试将简单的Parquet文件读入我的Google DataFlow管道
使用以下代码
127.0.0.1 example.com
在运行管道时始终触发以下异常
IllegalStateException:找不到类org.apache.avro.generic.GenericData的编码器
似乎HadoopFileSource中的这个方法无法像编码器一样处理这种类
Read.Bounded<KV<Void, GenericData>> results = HadoopFileSource.readFrom("/home/avi/tmp/db_demo/simple.parquet", AvroParquetInputFormat.class, Void.class, GenericData.class);
}
任何帮助将不胜感激
阿维
答案 0 :(得分:0)
HadoopFileSource
的设计存在问题。我建议转移到apache-beam
或(scio)这是apache&#34;版本&#34; (以及数据流sdk的未来&#34;)。一旦你在光束上,你可以:
这将是scala(但你可以很容易地翻译成java):
HDFSFileSource.from(
input,
classOf[AvroParquetInputFormat[AvroSchemaClass]],
AvroCoder.of(classOf[AvroSchemaClass]),
new SerializableFunction[KV[Void, AvroSchemaClass], AvroSchemaClass]() {
override def apply(e: KV[Void, AvroSchemaClass]): AvroSchemaClass =
CoderUtils.clone(AvroCoder.of(classOf[AvroSchemaClass]), e.getValue)
}
)
这是from
的替代版本,接受coder
。