У меня есть секционированная таблица с приблизительно 2 миллиардами строк в улье, например:
id, num, num_partition
1, 1253742321.53124121, 12
4, 1253742323.53124121, 12
2, 1353742324.53124121, 13
3, 1253742325.53124121, 12
И я хочу иметь таблицу типа:
id, rank,rank_partition
89, 1, 0
...
1, 1253742321,12
7, 1253742322,12
4, 1253742323,12
8, 1253742324,12
3, 1253742325,12
...
2, 1353742324,13
...
Я пытался сделать это :
df = spark.sql("select *, rank/10000000 from (select id,row_number() over(order by num asc) rank from table)t1")
Это было очень медленно, так как для упорядочения будет использоваться только 1 редуктор
, и я попытался сделать это:
df = spark.sql("select *, rank/10000000 from (select id,row_number() over(distribute by num_partition order by num_partition asc,num asc) rank from table)t1")
Но в результат num_partition не был отсортирован