将DataFrame show()的结果保存到pyspark中的字符串

发布于 2021-01-29 14:11:06

我想在pyspark中捕获 show
的结果,类似于此处此处。我无法使用pyspark找到解决方案,只能使用scala。

df.show()
#+----+-------+
#| age|   name|
#+----+-------+
#|null|Michael|
#|  30|   Andy|
#|  19| Justin|
#+----+-------+

最终目的是将其捕获为logger.info 我尝试过的字符串logger.info(df.show()),仅在控制台上显示。

关注者
0
被浏览
122
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    您可以使用链接捕获pyspark中的explain()的结果中所示的相同方法来构建辅助函数。只需检查源代码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))
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看