데이터 프레임을 사용하여 PySpark에서 여분의 벡터를 만드는 효율적인 방법을 찾고 싶습니다. 위로 요약 형식으로스파 스 벡터 pyspark
df = spark.createDataFrame([
(0, "a"),
(1, "a"),
(1, "b"),
(1, "c"),
(2, "a"),
(2, "b"),
(2, "b"),
(2, "b"),
(2, "c"),
(0, "a"),
(1, "b"),
(1, "b"),
(2, "cc"),
(3, "a"),
(4, "a"),
(5, "c")
], ["id", "category"])
+---+--------+
| id|category|
+---+--------+
| 0| a|
| 1| a|
| 1| b|
| 1| c|
| 2| a|
| 2| b|
| 2| b|
| 2| b|
| 2| c|
| 0| a|
| 1| b|
| 1| b|
| 2| cc|
| 3| a|
| 4| a|
| 5| c|
+---+--------+
:
:df.groupBy(df["id"],df["category"]).count().show()
이
+---+--------+-----+
| id|category|count|
+---+--------+-----+
| 1| b| 3|
| 1| a| 1|
| 1| c| 1|
| 2| cc| 1|
| 2| c| 1|
| 2| a| 1|
| 1| a| 1|
| 0| a| 2|
+---+--------+-----+
내 목표는 ID로이 출력을 얻을 수 있습니다
트랜잭션 입력 주어의 말합시다
+---+-----------------------------------------------+
| id| feature |
+---+-----------------------------------------------+
| 2|SparseVector({a: 1.0, b: 3.0, c: 1.0, cc: 1.0})|
올바른 방향으로 나를 가르쳐 주시겠습니까? Java에서 mapreduce를 사용하면 나에게 더 쉬운 것처럼 보였습니다.