Как найти дублированные столбцы со всеми значениями в фрейме искры? - PullRequest
0 голосов
/ 01 июля 2019

Я предварительно обрабатываю свои данные (2000K + строки) и хочу подсчитать дублированные столбцы в кадре данных spark, например:

id  |  col1  | col2  | col3  |  col4 |
----+--------+-------+-------+-------+
1   |   3    |  999  |  4    |  999  |
2   |   2    |  888  |  5    |  888  |
3   |   1    |  777  |  6    |  777  |

В этом случае значения col2 и col4это то же самое, что меня интересует, поэтому давайте подсчитаем + 1.

Я пытался toPandas (), транспонировал, а затем duplicateDrop () в pyspark, но это слишком медленно.

Есть ли какая-нибудь функция может решить эту проблему?
Любая идея будет признателен, спасибо.

1 Ответ

0 голосов
/ 01 июля 2019

То есть вы хотите посчитать количество повторяющихся значений на основе столбцов col2 и col4? Это должно сделать трюк ниже.

val dfWithDupCount = df.withColumn("isDup", when($"col2" === "col4", 1).otherwise(0))

Это создаст новый фрейм данных с новым логическим столбцом, в котором говорится, что если col2 равно col4, введите значение 1, иначе 0.

Чтобы найти общее количество строк, все, что вам нужно сделать, это сделать группу по isDup и количеству.

import org.apache.spark.sql.functions._
val groupped = df.groupBy("isDup").agg(sum("isDup")).toDF()

display(groupped)

Извиняюсь, если я вас неправильно понял. Возможно, вы могли бы использовать одно и то же решение, если пытались сопоставить любой из столбцов вместе, но для этого потребовалось бы использовать вложенные операторы when.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...