您可以使用链接Capturing the result of explain() in pyspark 中显示的相同方法构建一个辅助函数。只需检查source code for show() 并观察它正在调用self._jdf.showString()。
答案取决于您使用的 spark 版本,因为 show() 的参数数量随时间而变化。
Spark 2.3 及以上版本
在 2.3 版中,添加了 vertical 参数。
def getShowString(df, n=20, truncate=True, vertical=False):
if isinstance(truncate, bool) and truncate:
return(df._jdf.showString(n, 20, vertical))
else:
return(df._jdf.showString(n, int(truncate), vertical))
Spark 版本 1.5 到 2.2
从 1.5 版开始,添加了 truncate 参数。
def getShowString(df, n=20, truncate=True):
if isinstance(truncate, bool) and truncate:
return(df._jdf.showString(n, 20))
else:
return(df._jdf.showString(n, int(truncate)))
Spark 版本 1.3 到 1.4
show 函数在 1.3 版本中首次引入。
def getShowString(df, n=20):
return(df._jdf.showString(n))
现在使用辅助函数如下:
x = getShowString(df) # default arguments
print(x)
#+----+-------+
#| age| name|
#+----+-------+
#|null|Michael|
#| 30| Andy|
#| 19| Justin|
#+----+-------+
或者在你的情况下:
logger.info(getShowString(df))