DB2 загружает разделенные данные параллельно - PullRequest
0 голосов
/ 03 февраля 2010

У меня есть 10-узловая база данных DB2 9.5 с необработанными данными на каждом компьютере (т. Е. Узел 1: /scratch/data/dataset.1 узел 2: /scratch/data/dataset.2 ... узел 10: / scratch / data/dataset.10

Нет общего монтирования NFS - ни один из моих компьютеров не может обработать все объединенные наборы данных.

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

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

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

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

1 Ответ

0 голосов
/ 03 февраля 2010

Если отдельные файлы данных в каждом разделе не были получены из одного и того же раздела базы данных, то вы застряли, и вам придется выполнить загрузку 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 ...."
...