如何在pyspark中找到数据帧的大小

Bob*_*Bob 1 apache-spark-sql pyspark

如何复制此代码以获取 pyspark 中的数据帧大小?

scala> val df = spark.range(10)
scala> print(spark.sessionState.executePlan(df.queryExecution.logical).optimizedPlan.stats)
Statistics(sizeInBytes=80.0 B, hints=none)
Run Code Online (Sandbox Code Playgroud)

我想要做的是将 sizeInBytes 值放入一个变量中。

Dav*_*rba 7

在 Spark 2.4 中你可以做

df = spark.range(10)
df.createOrReplaceTempView('myView')
spark.sql('explain cost select * from myView').show(truncate=False)

|== Optimized Logical Plan ==
Range (0, 10, step=1, splits=Some(8)), Statistics(sizeInBytes=80.0 B, hints=none)
Run Code Online (Sandbox Code Playgroud)

在 Spark 3.0.0-preview2 中,您可以使用explaincost mode

df = spark.range(10)
df.explain(mode='cost')

== Optimized Logical Plan ==
Range (0, 10, step=1, splits=Some(8)), Statistics(sizeInBytes=80.0 B)
Run Code Online (Sandbox Code Playgroud)

  • 这似乎可行,但不如下面的代码那么简洁,可以在 scala ```spark.sessionState.executePlan(df.queryExecution.logic).optimizedPlan.stats.sizeInBytes``` 中使用。如何在 Pyspark 中复制此代码? (4认同)
  • @DinoG好吧,将其放入变量会更棘手,但你总是可以解析字符串 `spark.sql(explain cost ...).collect()[0]['plan']`,它将是不太漂亮,但肯定有可能 (3认同)