簡體   English   中英

如何在 Flink 應用程序中使用 AvroParquetReader?

[英]How to use AvroParquetReader inside a Flink application?

我在 Flink 應用程序中使用AvroParquetReader時遇到問題。 (flink>=1.15)

Motivaton(也就是我為什么要使用它)

根據官方文檔,可以將 Flink 中的 Parquet 文件讀取到FileSource中。 但是,我只想編寫一個 function 來將鑲木地板文件加載到 Avro 記錄中,而無需創建DataStreamSource 特別是,我想將鑲木地板文件加載到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。
  2. Hadoop不是flink shaded的,是和2.10版本分開安裝的。

很想聽聽您是否對此有一些見解。

ParquetAvroReader 應該能夠毫無問題地讀取鑲木地板文件。

有一個官方hadoop指南,其中有一些潛在的問題修復方法,可以在此處找到。 如果我沒記錯的話,這個問題是由於缺少一些 Hadoop AWS 依賴項造成的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM