pyspark记录列的日志

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyspark记录列的日志相关的知识,希望对你有一定的参考价值。

length = df.count()
df = df.withColumn("log", log(col("power"),lit(length)))

以下各行将引发此类错误。您能帮我用另一个值或另一个列作为基础来记录一列的日志。


TypeError                                 Traceback (most recent call last)
<ipython-input-102-c0894b6127d1> in <module>()
      1 #df.show()
      2 
----> 3 df = df.withColumn("log", log(col("power"),lit(2)))

5 frames
/content/spark-2.4.5-bin-hadoop2.7/python/pyspark/sql/column.py in __iter__(self)
    342 
    343     def __iter__(self):
--> 344         raise TypeError("Column is not iterable")
    345 
    346     # string methods

TypeError: Column is not iterable
答案

如果要使用不是在Spark数据帧上内置的功能,则可以使用用户定义的函数,在这种情况下,它看起来像这样:

from pyspark.sql.functions import udf
from math import log

@udf("float")
def log_udf(s):
  return log(s,2)

df.withColumn("log", log_udf("power")).show()

以上是关于pyspark记录列的日志的主要内容,如果未能解决你的问题,请参考以下文章

在pyspark中添加数据类型为字符串格式的两列的值

使用 pyspark 验证不同行中同一列的数据

将重复记录合并到 pyspark 数据框中的单个记录中

常用python日期日志获取内容循环的代码片段

Pyspark PCA 实施

如何将 PySpark Dataframe 列的类型指定为 JSON