hadoop 如何在Flink应用程序中使用AvroParquetReader?

uqjltbpv  于 2023-01-12  发布在  Hadoop
关注(0)|答案(1)|浏览(215)

我在Flink应用程序中使用AvroParquetReader时遇到问题。(flink〉= 1.15)

    • 动机(也就是我想使用它的原因)**

根据official doc,可以将Flink中的Parquet文件读取到FileSource中。然而,我只想编写一个函数,将Parquet文件加载到Avro记录中,而不创建DataStreamSource。特别是,我想将 parquet 文件加载到FileInputFormat中,这是一个完全独立的API(出于一些奇怪的原因)。(而且我不能很容易地看到一个人如何可以投BulkFormatStreamFormat到它,如果一个人挖深一层。)
因此,如果使用org.apache.parquet.avro.AvroParquetReader直接读取它,则会简单得多。

    • 错误说明**

但是,我在本地运行Flink应用程序后发现此错误:java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.s3a.S3AFileSystem not found.
这是相当出乎意料的,因为flink-s3-hadoop-fs jar已经被加载到插件系统中(文件路径也已经被添加到HADOOP_CLASSPATH中),所以不仅flink知道它在哪里,本地hadoop也应该知道。
备注:
1.如果没有这个AvroParquetReader,Flink应用程序可以写入S3,没有问题。

  1. Hadoop不是一个 Flink 阴影,而是与版本2.10分开安装。
    我很想听听你对此有什么见解。
    ParquetAvroReader应该能够毫无问题地读取 parquet 文件。
w8ntj3qf

w8ntj3qf1#

有一个官方的hadoop指南,有一些潜在的修复这个问题,可以找到here。如果我记得正确,这个问题是由于一些Hadoop AWS依赖项丢失。

相关问题