使用 pyspark 比较镶木地板文件的元数据

Posted

技术标签:

【中文标题】使用 pyspark 比较镶木地板文件的元数据【英文标题】:compare metadata of parquet file using pyspark 【发布时间】:2020-01-20 16:11:06 【问题描述】:

我正在使用 pyspark 并且遇到需要比较 2 个 parquet 文件的元数据的情况。

例子:-

Parquet 1 架构是: 1、ID、字符串 2、地址串 3、日期、日期

Parquet 2 架构是: 1、ID、字符串 2、日期、日期 3、地址串

这应该告诉我一个区别,因为在镶木地板 2 中,第 2 列移到了第 3 列。

谢谢, VK

【问题讨论】:

【参考方案1】:

在 Spark 中,没有用于比较标头的本机命令。您的问题的解决方案可能如下:

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

df1 = spark.read.parquet('path/to/file1.parquet', header='true')
df2= spark.read.parquet('path/to/file2.parquet', header='true')

df1_headers = df1.columns
df2_headers = df2.columns

# Now in Python you could compare the lists with the headers
# You don't need Spark to compare simple headers :-)

【讨论】:

谢谢,header = True 不起作用,但我们可以将列放入列表中。现在的问题是我需要按顺序比较,如果订单也发生了变化,也应该报告..你能建议我们如何实现这一目标 我刚刚添加了这个,它给出了想要的结果 for i in range(len(df1_headers)): a=(diff(df2_headers[i],df1_headers[i])) if a: print(df1_headers[i],df2_headers[i]) @Vishvanath 是的,标题中有错字,但我修复了它。您想要的比较与 Spark 无关,而是一个 Python 问题,因为您比较列表。您仅使用 Spark 来创建列,那么这是一个 Python 问题。因此,您现在可以检查我更正的答案,如果有效,请接受答案并创建一个新的比较(不带 Spark 标签)。我们还好吗?

以上是关于使用 pyspark 比较镶木地板文件的元数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 pyspark 从 s3 位置读取镶木地板文件的文件夹到 pyspark 数据帧

如何使用 Pyspark 并行处理多个镶木地板文件?

pyspark 使用动态日期范围读取镶木地板文件分区数据

使用 pyspark 将镶木地板文件(在 aws s3 中)存储到 spark 数据框中

Pyspark 数据框写入镶木地板而不删除 /_temporary 文件夹

在读取镶木地板文件时刷新 Dataframe 的元数据