【发布时间】:2021-02-12 11:26:34
【问题描述】:
问题:
在基于 ML 的场景中,我试图查看推理文件中多列数据与提供给我进行训练的文件的出现情况。我只需要为分类变量找到它,因为数字属性是按比例缩放的。
期望:
我在标准 SQL 查询中执行以下操作取得了一些成功,但我希望将其移至 PySpark。
培训文件如下所示:
| A | B | C | Class |
|---|---|---|---|
| 10 | 0.2 | RDK | AAA |
| 10 | 0.2 | RDK | AAA |
| 10 | 0.2 | RDK | AAA |
| 10 | 1.3 | USW | ACA |
| 10 | 1.3 | USW | ACA |
| 10 | 1.3 | USW | ACA |
| 8 | 0.2 | RDK | BBV |
| 8 | 0.1 | RDJ | BBR |
| 10 | 0.2 | RDK | AAA |
| 10 | 5.1 | RDK | AAA |
| 8 | 0.1 | RDJ | BBR |
| 8 | 0.1 | RDJ | BBR |
| 10 | 5.1 | RDK | AAA |
| 10 | 5.1 | RDK | AAA |
| 8 | 0.1 | RDJ | BBR |
| 8 | 0.1 | RDJ | BBR |
并使用 sql 我能够获得所需的输出。但是请注意,我只匹配 Col A 和 C,因为它们本质上是分类的:
select a.A, a.B, a.C, b.prediction, a.Class count(1) as distr_count from train_file a left outer join test_file b
on a.A = b.A
and a.C = b.C
group by a.A, a.C
期望的输出:
| A | B | C | prediction | Class | distr_count |
|---|---|---|---|---|---|
| 10 | 0.2 | RDK | AAA | AAA | 7 |
| 10 | 1.3 | USW | ACA | AAA | 3 |
| 8 | 0.2 | RDK | BBV | BBR | 1 |
| 8 | 0.1 | RDJ | BBR | BBR | 5 |
| 10 | 5.1 | RDK | AAA | AAA | 7 |
| 7 | 1.2 | SSW | BBR | XXX | 0 |
【问题讨论】:
-
您的查询应该被编译器拒绝,因为
B和class在SELECT中,但不在GROUP BY中。 -
@GordonLinoff 是的,这是可能的,因为我已尝试将我的实际数据和查询最小化以便理解。请根据您的感觉更新,同时我会更新查询。
标签: python sql pyspark group-by