Преобразование SQL запроса в Spark Data-frame - PullRequest
0 голосов
/ 14 февраля 2020

Я хочу преобразовать приведенный ниже запрос во фрейм данных с искрой (я новичок в спарке):

- Создание номера группы

select distinct *, DENSE_RANK() OVER(ORDER BY person_id, trust_id) AS group_number;

- Это то, что я получилось до сих пор для выше

df = self.spark.sql("select person_id, trust_id, insurance_id, amount, time_of_app, place_of_app from {}".format(self.tables['people']))

df = df.withColumn("group_number", dense_rank().over(Window.partitionBy("person_id", "trust_id").OrderBy("person_id", "trust_id")))

- другой запрос 1

where group_number in (select group_number from etl_table_people where code like 'H%') group by group_number having count(distinct amount) > 1;

- другой запрос 2

where insurance_id = 'V94.12'
group by group_number having count(distinct amount) = 2;

1 Ответ

0 голосов
/ 14 февраля 2020

То, что вы ищете, это Window Spe c Функция свечи.

val windowSpec = Window.partitionBy("person_id","trust_id").orderBy(col("person_id").desc).orderBy(col("trust_id").desc)

df.withColumn("group_number", dense_rank() over windowSpec)

И вы получите свой фрейм данных, используя искру на основе вашего источника данных. Вы можете сослаться на это , если ваш источник - Hive

...