【发布时间】:2022-10-25 11:15:43
【问题描述】:
我正在使用 pyspark 上的数据框,我正在尝试添加一个新列,其中包含 this post 中的不同记录的计数。这是我正在使用的代码:
import pyspark.sql.functions as func
df= df.groupBy('CUSTOMER').count().select('CUSTOMER', func.col('count').alias('COUNT'))
它适用于大约 180k 记录,但有一些记录我得到这样的东西:
| CUSTOMER | COUNT |
|---|---|
| 123456 | 50 |
| 123456 | 50 |
而不是像这样的东西,这是我所期望的:
| CUSTOMER | COUNT |
|---|---|
| 123456 | 100 |
我注意到 hive 上 CUSTOMER 的数据类型(因为稍后将数据框写入数据库)是 decimal(12,0) 所以我认为可能有些记录有 CUSTOMER = 123456 和其他的 CUSTOMER=123456.0 不知何故这是不同的所以我去修改了创建数据框的查询(来自另一个配置单元数据库)以在选择语句上使用CAST(CUSTOMER AS INT) AS CUSTOMER,但我仍然得到相同的结果。
关于还有什么可能导致此问题或我还可以检查什么的任何想法?
提前致谢。
【问题讨论】:
-
df.printSchema()显示什么? -
你也可以分享你的查询,也许是样本数据
-
使用
F.trim("CUSTOMER")。例如。df = df.groupBy(F.trim("CUSTOMER")).agg(F.count(F.lit(1)).alias('COUNT'))
标签: python pyspark apache-spark-sql hive