У меня есть искровой фрейм данных dist со следующей схемой:
+-----+-----+-----+-----+-----+
| id1 | id2 | _c1 | _c2 | _c3 |
+-----+-----+-----+-----+-----+
| int | int | bin | bin | bin |
+-----+-----+-----+-----+-----+
bin - двоичный 0/1
Другая переменная X сследующая схема:
+-----+-----+-----+-----+
| id | _c1 | _c2 | _c3 |
+-----+-----+-----+-----+
| int | bin | bin | bin |
+-----+-----+-----+-----+
Это то, что я намеревался сделать:
int count[]
int i=0
for each row r in X {
cols <- list of columns _ci, where r._ci=1 // step-1
df1 <- select cols from dist // step-2
df2 <- BITWISE_OR all columns in df1 // step-3
count[i++] <- count all rows in df2 whose value is 1 // step-4
}
Я все еще могу понять, как шаг 1 и шаг 2, я не уверен, каквыполнить шаг 3 и шаг 4.И есть ли какой-нибудь элегантный способ сделать вышеупомянутый псевдокод эффективным способом, используя spark.
Примечание: Количество столбцов (с именем, например _ci) в dist и X может иметь переменное число.(например: id, _c1, _c2, ....., _cn).Было бы очень полезно, если бы решение не относилось к конкретному номеру столбца.