2011-12-22 2 views
2

В моей повседневной работе я часто работаю с наборами данных, которые содержат миллионы строк, иногда 100 миллионов, а иногда и более 1 миллиарда. Эти наборы данных часто нужно сортировать. Ключи почти всегда представляют собой большие целые значения (обычно 9 цифр). Иногда наборы данных имеют составные клавиши из 9 цифр и 3-значных цифр.Реализация сортировки Radix для наборов данных в SAS

Мне было интересно, можно ли реализовать макрос счисления (LSD-first) в SAS, который можно использовать вместо PROC SORT, чтобы сократить время, затрачиваемое на сортировку этих наборов данных. Я уже настроил сортировки, чтобы использовать сжатие, если это необходимо, сохраняйте только соответствующие поля (или используйте tagort), длину поля размера, не сортировать без необходимости и т. Д. И т.д. ...

Аппаратное обеспечение, которое я использую, ограничения - предположим, что у меня есть только 2G памяти, доступной для SAS, поэтому решение не может требовать ввода всех значений ключа во временный массив в памяти (по крайней мере, не все одновременно).

Будет ли решение предлагать улучшение производительности по сравнению с сортировкой proc? Кто-нибудь уже реализовал что-то подобное или имел с ним опыт? Я трачу свое время?

ответ

1

Я нашел некоторые примеры поразрядной сортировки реализованного (используя временные массивы) здесь:

http://listserv.uga.edu/cgi-bin/wa?A2=ind9901b&L=sas-l&P=11902

Используя этот пример и некоторые довольно рыхлые предположения, кажется, как будто новый древовидного вида в SAS (версии 9 +) будет превосходить однопоточную сортировку радикса в такт. времени. В процессорное время сортировка radix по-прежнему работает лучше, но на самом деле это не так много. Поэтому я собираюсь прекратить это делать дальше.

+0

Ваша ссылка не работает для меня. Я предполагаю, что вы выполняете свой собственный параллельный сортинг через SAS/Connect, не является подходящим вариантом? – user667489

+0

У нас нет лицензии SAS/Connect, поэтому для меня это не вариант. Я также не использовал Connect, поэтому я не чувствую себя готовым прокомментировать. –

+0

Если вы когда-нибудь захотите изучить это, вы можете найти [эту ссылку] (http://support.sas.com/rnd/scalability/tricks/connect.html) интересным. – user667489