如何使用python从sparkDataframe读取十进制精度值

gorkyyrv  于 2021-05-29  发布在  Spark
关注(0)|答案(1)|浏览(398)

我有一个spark数据框。我必须从中读取列名、数据类型和精度值(如果有的话)。
我能读名字和类型如下

for f in df.schema.fields:
       name = f.name
       type = f.dataType.typeName()

dataframe架构如下所示-

[StructField(orgid,StringType,true), StructField(customerid,DecimalType(15,5),true), StructField(oppid,IntegerType,true)]

在上述模式中,我必须读取十进制精度值,即。, (15,5) . 有什么办法吗?谢谢你的帮助

p8ekf7hl

p8ekf7hl1#

检查数据类型是否为十进制 isinstance ,然后从中提取精度值 .precision 以及 .scale :

from pyspark.sql.types import DecimalType

for f in df.schema.fields:
    if isinstance(f.dataType, DecimalType):
        print(f.dataType.precision, f.dataType.scale)

# 15 5

相关问题