我在Flink应用程序中使用AvroParquetReader
时遇到问题。(flink〉= 1.15)
- 动机(也就是我想使用它的原因)**
根据official doc,可以将Flink中的Parquet文件读取到FileSource
中。然而,我只想编写一个函数,将Parquet文件加载到Avro记录中,而不创建DataStreamSource
。特别是,我想将 parquet 文件加载到FileInputFormat
中,这是一个完全独立的API(出于一些奇怪的原因)。(而且我不能很容易地看到一个人如何可以投BulkFormat
或StreamFormat
到它,如果一个人挖深一层。)
因此,如果使用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,没有问题。
- Hadoop不是一个 Flink 阴影,而是与版本2.10分开安装。
我很想听听你对此有什么见解。
ParquetAvroReader应该能够毫无问题地读取 parquet 文件。
1条答案
按热度按时间w8ntj3qf1#
有一个官方的
hadoop
指南,有一些潜在的修复这个问题,可以找到here。如果我记得正确,这个问题是由于一些Hadoop AWS依赖项丢失。