Есть ли способ сделать искровое повторное разделение по размеру, а не по количеству данных

У меня набор данных равномерно разделен по количеству записей на раздел, но некоторые разделы имеют размер данных, который в 4 или более раз больше, чем другие. У каждой записи есть своя коллекция, и я полагаю, что в некоторых записях она может быть намного больше. Это вызывает то, что похоже на искажение данных, некоторые разделы занимают намного больше времени из-за несбалансированных записей. Если бы я мог включить ведение журнала в Spark, чтобы печатать размер в байтах каждого обрабатываемого раздела и размер строки, это могло бы помочь мне в устранении неполадок. Потому что данные отправляются в Cassandra с помощью их коннектора Spark, который выполняет собственное переразбиение.

введите описание изображения здесь


person Fabio    schedule 11.05.2020    source источник
comment
Проверьте этот ответ - stackoverflow.com/questions/61338374/   -  person Srinivas    schedule 11.05.2020
comment
Я уже делаю репартитоны, и у них примерно такое же количество записей. Я думаю, что, поскольку строки содержат массивы, разница может быть большой. ваша ссылка, кажется, указывает на то, что, возможно, я мог бы хотя бы зарегистрировать размер каждого раздела или строки во время работы Spark. Это поможет устранить эту проблему.   -  person Fabio    schedule 11.05.2020


Ответы (1)


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

df.filter( size($colname) < 1000)
person Fabio    schedule 11.06.2020