我的要求是将DataFrame中的所有Decimal数据类型转换为String . 逻辑工作正常,类型简单但不适用于ArrayType . 这是逻辑: -
var df = spark.sql("select * from test_1")
for(dt
if(dt._2.substring(0,7) == "Decimal"){
df = df.withColumn(dt._1,df(dt._1).cast("String"))
}
}
但是arrayType中的列保持不变,尽管它们是十进制类型 . 请帮助,我如何循环嵌套元素并将其转换为字符串 . 这是我的数据帧的架构:
scala> df.schema res77:org.apache.spark.sql.types.StructType = StructType(StructField(mstr_prov_id,StringType,true),StructField(prov_ctgry_cd,StringType,true),StructField(prov_orgnl_efctv_dt,TimestampType,true),StructField (prov_trmntn_dt,TimestampType,true),StructField(prov_trmntn_rsn_cd,StringType,true),StructField(npi_rqrd_ind,StringType,true),StructField(prov_stts_aray_txt,ArrayType(StructType(StructField(PROV_STTS_KEY,DecimalType(22,0),true),StructField( PROV_STTS_EFCTV_DT,TimestampType,true),StructField(PROV_STTS_CD,StringType,true),StructField(PROV_STTS_TRMNTN_DT,TimestampType,true),StructField(PROV_STTS_TRMNTN_RSN_CD,StringType,true)),true),true))