微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PySpark 为 DecimalType 列创建直方图数据框

如何解决PySpark 为 DecimalType 列创建直方图数据框

如何为具有以下架构的单列 DataFrame 创建均匀分布的 bin 计数:

>>> df.schema
StructType(List(StructField(a,DecimalType(38,0),true)))

将数据框创建为 MWE:

from pyspark.sql import Row
from pyspark.sql.types import StructType,StructField,DecimalType
from decimal import Decimal

schema = StructType([StructField('a',True)])

df = spark.createDataFrame(
    spark.sparkContext.parallelize([Row(a=Decimal(x)) for x in range(100)]),schema
)

现在是often accepted answer

df.select('a').rdd.flatMap(lambda x: x).histogram(10)

但它给出了一个类型错误

类型错误:* 不支持的操作数类型:'decimal.Decimal' 和 'float'

因此十进制类型出现问题。解决问题的方法是什么,或者如何将值转换为可接受的数据类型?

解决方法

您可以使用地图强制转换为浮动:

df.select('a').rdd.flatMap(lambda x: x).map(float).histogram(10)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。