[英]How to use AvroParquetReader inside a Flink application?
我在 Flink 應用程序中使用AvroParquetReader
時遇到問題。 (flink>=1.15)
Motivaton(也就是我為什么要使用它)
根據官方文檔,可以將 Flink 中的 Parquet 文件讀取到FileSource
中。 但是,我只想編寫一個 function 來將鑲木地板文件加載到 Avro 記錄中,而無需創建DataStreamSource
。 特別是,我想將鑲木地板文件加載到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 也應該知道。
注釋:
AvroParquetReader
,Flink 應用程序可以毫無問題地寫入 S3。很想聽聽您是否對此有一些見解。
ParquetAvroReader 應該能夠毫無問題地讀取鑲木地板文件。
有一個官方hadoop
指南,其中有一些潛在的問題修復方法,可以在此處找到。 如果我沒記錯的話,這個問題是由於缺少一些 Hadoop AWS 依賴項造成的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.