使用 ruby 修改 Parquet 文件中的列类型(使用 parquet Gem)

问题描述 投票:0回答:1

我的数据仓库中有许多 Parquet 文件。一些早期的文件 ~700 将列的架构类型设置为字符串,而它们本应为 int32。了解 Parquet 是不可变的;我正在寻找使用正确的列类型重写这些文件的最佳方法。我将 Ruby 与红色镶木地板宝石一起使用。

我尝试将列转换为 int,然后将文件保存到新位置。它没有错误,但不起作用。我在下面概述了我正在使用的方法。任何帮助将不胜感激。

def castCol(col = nil)
  filesWritten = 0
  getParquets.each do |file|
    table = Arrow::Table.load(file)
    if table.heading.data_type == "string"
      newFileLoc = @saveDir + File.path(file)
      puts newFileLoc

      # Create Dir if Required
      unless File.directory?(File.dirname(newFileLoc))
        FileUtils.mkdir_p(File.dirname(newFileLoc))
      end

      table.heading.cast('int32')
      table.save(newFileLoc)

      filesWritten += 1
    end
  end
  puts "Numebr of File Written: #{filesWritten}"
end
ruby parquet data-warehouse
1个回答
0
投票

我已经用 Python 编写了转换。 PyArrow 库有更好的文档记录,这可能是预期的。

© www.soinside.com 2019 - 2024. All rights reserved.