DB2 загружает секционированные данные параллельно

У меня есть база данных DB2 9.5 с 10 узлами, с необработанными данными на каждой машине (т.е. node1:/scratch/data/dataset.1 node2:/scratch/data/dataset.2 ... node10:/scratch/data/dataset. 10

Нет общего монтирования NFS — ни одна из моих машин не могла обработать все наборы данных вместе взятые.

каждая строка файла набора данных представляет собой длинную строку текста, разделенную столбцами. Первый столбец является ключевым. Я не знаю хеш-функцию, которую будет использовать DB2, поэтому набор данных не разбит на разделы.

Если не считать переименования всех моих файлов, есть ли способ заставить DB2 загружать их все параллельно? Я пытаюсь сделать что-то вроде

загрузить из '/scratch/data/dataset' del, измененного coldel| сообщения fastparse /dev/null заменить на TESTDB.data_table part_file_location '/scratch/data';

но я понятия не имею, как предложить db2 искать набор данных 1 на первом узле и т. д.


person Erik Paulson    schedule 02.02.2010    source источник


Ответы (1)


Если отдельные файлы данных в каждом разделе не происходят из одного и того же раздела базы данных, то вы застряли, и вам придется запускать загрузку 10 раз — по одному разу из каждого раздела базы данных. Вы можете сделать это с помощью db2_all, чтобы выполнить загрузку одной командой:

db2_all "db2 connect to db; db2 load from /scratch/data/dataset.\$DB2NODE of del ..."

Не пытайтесь запустить команду db2_all параллельно. ;-)

Еще одна мысль на будущее: хватит ли места на одном сервере, если сначала сжать все файлы? Вы можете загрузить из именованного канала:

   mkfifo f
   cat dataset.*.gz | gzip -dc > f &
   db2 "load from f of del ...."
person Ian Bjorhovde    schedule 03.02.2010