Dataframe 从DataRicks中的大pyspark数据帧或考拉数据帧返回一行的最快方法是什么?

Dataframe 从DataRicks中的大pyspark数据帧或考拉数据帧返回一行的最快方法是什么?,dataframe,apache-spark,pyspark,databricks,spark-koalas,Dataframe,Apache Spark,Pyspark,Databricks,Spark Koalas,我在DataRicks笔记本上有一个很大的数据框(2000万行,35列)。我使用python对其执行了一些转换和连接(合并)操作,例如: mdf.path_info = mdf.path_info.transform(modify_path_info) x = mdf[['providerid','domain_name']].groupby(['providerid']).apply(domain_features) mdf = ks.merge( mdf, x[['domain_namex

我在DataRicks笔记本上有一个很大的数据框(2000万行,35列)。我使用python对其执行了一些转换和连接(合并)操作,例如:

mdf.path_info =  mdf.path_info.transform(modify_path_info)
x = mdf[['providerid','domain_name']].groupby(['providerid']).apply(domain_features)
mdf = ks.merge( mdf, x[['domain_namex','domain_name_grouped']], left_index=True, right_index=True)
x = mdf.groupby(['providerid','uid']).apply(userspecificdetails)
mmdf = mdf.merge(x[['providerid','uid',"date_last_purch","lifetime_value","age"]], how="left", on=['providerid','uid'])

在这些操作之后,我想显示数据帧的一些行,以验证生成的数据帧。我试图打印/显示这个大数据帧的1-5行,但由于spark的惰性计算特性,所有的打印命令都会启动6-12个spark作业并永远运行,之后集群进入不可用状态,然后什么也不会发生

mdf.head() 

display(mdf)

mdf.take([1])

mdf.iloc[0]
还尝试转换为spark数据帧,然后尝试:

df = mdf.to_spark()

df.show(1)

df.rdd.takeSample(False, 1, seed=0)

df.first()
我正在使用的集群配置是8worker\u 4core\u 8gb,这意味着在Databricks运行时版本上,每个worker和驱动程序节点都是8.0gb内存、4个内核、0.5dbu7.0(包括apachespark 3.0.0、Scala 2.12)


有人可以建议一种更快速的方法来获取/打印一行大数据帧,而不必等待处理整个2000万行的数据帧。

由于延迟计算,Spark将首先执行转换,然后显示一行。您可以减少输入数据的大小,并在更小的数据集上进行转换,例如:


转换为spark dataframe后,您可以
缓存计算结果,然后调用
操作

df = mdf.to_spark()

# caches the result so the action called after this will use this cached
# result instead of re-computing the DAG
df.cache() 

df.show(1)
您可能希望通过以下方式释放用于缓存的内存:

df.unpersist()
df.unpersist()