Apache Nifi:如何使用保存在 "avro.schema" 属性中的模式从 CSV 文件创建镶木地板文件

Apache Nifi : How to create parquet file from CSV file with schema saved in "avro.schema" attribute

我正在尝试使用 Apache Nifi 从 CSV 文件创建镶木地板文件。

我可以将 CSV 文件转换为 parquet 文件,但问题是,parquet 文件的模式包含结构类型(我需要克服)并将其转换为字符串类型。

我在 Windows Server 2016 上使用 Apache Nifi 1.14.0。

这就是我迄今为止尝试将 CSV 转换为 parquet 的方式...

以下3个控制器我都用过

  1. CSV 阅读器
  2. CSVRecordSetWriter
  3. ParquetRecordSetWriter

还有,这些是processors/Flow

  1. 获取文件
  2. ConvertRecord(CSVReader 到 CSVRecordSetWriter,这将自动生成“avro.schema”属性,下一步我将更新此属性)
  3. UpdateAttribute(更新“avro.schema”属性,在我推断出 2 种数据类型的地方,我将其替换为 '[“null”,“string”]')
  4. ConvertRecord(CSVReader 到 ParquetRecordSetWriter)
  5. UpdatedAttribute(用于在文件名中附加“.parquet”)
  6. PutFile

我也想知道如何在 Windows OS 中查看 .parquet 文件。目前,我正在通过 PySpark 读取镶木地板文件并检查架构。 :|

这是转换后镶木地板文件架构的样子。我想要 string 而不是 Struct 作为输出。

请注意:有很多 columns/fields 的 CSV。我不想手动创建模式。


任何其他实现此目的的方法都会非常有帮助。
谢谢!

在尝试了“ParquetRecordSetWriter”的更多选项后,我能够使用我在“”中捕获的模式创建镶木地板文件avro.schema”属性。