【问题标题】:What is the best way to count rows in spark data frame for monitoring?对 spark 数据框中的行进行计数以进行监视的最佳方法是什么?
【发布时间】:2021-01-26 14:21:11
【问题描述】:

我有一个在 EMR 上运行的 pyspark 应用程序,我想监控它的一些指标。 例如计数加载,保存的行。目前我使用count 操作来提取值,这显然会减慢应用程序的速度。我在想是否有更好的选择来从数据框中提取这些指标? 我正在使用 pyspark 2.4.5

【问题讨论】:

    标签: performance apache-spark pyspark monitoring


    【解决方案1】:

    如果您要计算完整的数据帧,请先尝试persisting 数据帧,这样您就不必运行两次计算。

    如果可以接受近似计数,您可以在计数前sample 以加快速度。

    sample_fraction = 0.01 # take a roughly 1% sample
    sample_count = df.sample(fraction=sample_fraction).count() # count the sample
    extrapolated_count = sample_count / sample_fraction # estimate the total count
    

    如果您需要计算特定列的不同值,还有一个 approx_count_distinct 函数。

    【讨论】:

      【解决方案2】:

      如果您需要精确计数,则使用use parquetdelta lake 格式来存储数据。它存储统计信息,因此计数结果很快(以秒为单位)。

      如果您可以在没有精确计数的情况下生活,那么您可以使用Dataframe.isEmptyDataframe.firstDataframe.head(<number of rows>) 等来满足您的需求。

      【讨论】:

        猜你喜欢
        • 2010-09-06
        • 2012-06-12
        • 1970-01-01
        • 2019-08-17
        • 1970-01-01
        • 1970-01-01
        • 2012-03-05
        • 1970-01-01
        • 2012-07-20
        相关资源
        最近更新 更多