【问题标题】:Great Expectation profiling on SparkDF takes a long time when there are many columns当有很多列时,SparkDF 上的 Great Expectation 分析需要很长时间
【发布时间】:2021-09-25 14:08:13
【问题描述】:

我需要在 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)

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

【问题讨论】:

    标签: great-expectations


    【解决方案1】:

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

    【讨论】:

    • 通过更多测试,我发现即使使用 Pandas Dataframe,由于执行时间与列数不成线性比例,执行时间也会因列数而变得非常慢。它似乎是二次的。知道为什么吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-07
    • 2020-08-26
    • 2014-10-09
    相关资源
    最近更新 更多