使用 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 将镶木地板文件(在 aws s3 中)存储到 spark 数据框中