Python PySpark为DecimalType列创建直方图数据框
如何使用以下架构为单列数据帧创建均匀分布的存储箱计数:Python PySpark为DecimalType列创建直方图数据框,python,apache-spark,pyspark,rdd,Python,Apache Spark,Pyspark,Rdd,如何使用以下架构为单列数据帧创建均匀分布的存储箱计数: >>df.schema StructType(列表(StructField(a,DecimalType(38,0),true))) 将数据帧创建为MWE: 从pyspark.sql导入行 从pyspark.sql.types导入StructType、StructField、DecimalType 从十进制输入十进制 schema=StructType([StructField('a',DecimalType(38,0),True)]) d
>>df.schema
StructType(列表(StructField(a,DecimalType(38,0),true)))
将数据帧创建为MWE:
从pyspark.sql导入行
从pyspark.sql.types导入StructType、StructField、DecimalType
从十进制输入十进制
schema=StructType([StructField('a',DecimalType(38,0),True)])
df=spark.createDataFrame(
spark.sparkContext.parallelize([Row(a=Decimal(x))表示范围(100)]内的x,
模式
)
现在这是一个:
df.select('a').rdd.flatMap(λx:x).直方图(10)
但它给出了一个类型错误:
TypeError:不支持*:“decimal.decimal”和“float”的操作数类型
所以十进制类型出现了一些问题。解决问题的方法是什么,或者如何将值转换为可接受的数据类型?您可以使用映射转换为浮点:
df.select('a').rdd.flatMap(lambda x: x).map(float).histogram(10)