当有很多列时,SparkDF 上的 Great Expect 分析需要很长时间

问题描述

我需要在 Databricks 中分析来自雪花的数据。数据只是 100 行但包含 3k+ 列的样本,最终会有更多行。当我减少列数时,分析完成得非常快,但列越多,它得到的时间就越长。我尝试对样本进行分析,但在 10 多个小时后,我不得不取消这项工作。

这是我使用的代码

df = spark.read.format('sNowflake').options(**sfOptions).option('query',f'select * from {db_name}')

df_ge = ge.dataset.SparkDFDataset(df_sf)

BasicDatasetProfiler.profile(df_ge)

您可以使用包含大量列的任何数据进行测试。这是正常现象还是我做错了什么?

解决方法

基本上,GE 单独计算每一列的指标,因此,它为每一列和它计算的每个指标执行一个操作(可能是 collect)。 collect 是您可以在 Spark 上进行的最昂贵的操作,因此这几乎是正常的,您拥有的列越多,所需的时间就越长。