可以比较两个镶木地板文件吗?

Can two parquet files be compared?

我找不到开源工具或库来比较两个 parquet 文件。假设我没有忽略明显的问题,这是否有技术原因?

程序员在编写 parquet diff 工具之前需要考虑什么?

我正在使用 Python 语言。

谢谢。

最简单的组合是将 pandaspyarrow 结合使用。安装完这两个包后,您可以使用 https://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_parquet.html 将 Apache Parquet 文件加载到 Pandas DataFrame 中,然后在两个生成的 DataFrame 上使用 Pandas' assert_frame_equal

请注意,这将比较两个结果数据帧,而不是 Parquet 文件的确切内容。由于并非所有 Parquet 类型都可以匹配 1:1 到 Pandas,因此如果它是 Date 或 DateTime 之类的信息将会丢失,但 Pandas 提供了一个非常好的比较基础结构。

或者,您可以使用 Apache Arrow(上面提到的 pyarrow 包)并将数据读入 pyarrow.Table 并检查是否相等。此方法更好地保留了类型信息,但如果存在以下差异,则不会那么冗长:

import pyarrow.parquet as pq

table1 = pq.read_table('file1.parquet')
table2 = pq.read_table('file2.parquet')

assert table1.equals(table2)