2014-10-23 3 views
1

У меня возникли трудности с импортом больших наборов данных в Couchbase. У меня есть опыт, который очень быстро справляется с Redis с помощью командной строки, но я еще ничего не видел для Couchbase.Импорт больших наборов данных в Couchbase

Я попытался использовать SDK PHP, и он импортирует около 500 документов в секунду. Я также попробовал скрипт cbcdocload в папке bin Couchbase, но кажется, что каждый документ находится в файле JSON. Немного работы для создания всех этих файлов, а затем для их загрузки. Есть ли какой-то другой процесс импорта, который мне не хватает? Если cbcdocload является единственным способом быстрой загрузки данных, то можно ли поместить несколько документов в 1 файл json.

ответ

1

Возьмите файл, который имеет все документы в формате JSON в нем и застегивать файл:

zip somefile.zip somefile.json 

Поместите почтовый файл (ы) в каталог. Я использовал ~/json_files/в своем домашнем каталоге.

Затем загрузите файл или файлы с помощью следующей команды:

cbdocloader -u Administrator -p s3kre7Pa55 -b MyBucketToLoad -n 127.0.0.1:8091 -s 1000 \ 
~/json_files/somefile.zip 

Примечание: '-s 1000' является размер памяти. Вам нужно будет отрегулировать это значение для вашего ведра.

В случае успеха вы увидите вывод о том, как были загружены много документов, успех и т.д.

Вот краткий сценарий, чтобы загрузить много .zip файлов в заданном каталоге:

#!/bin/bash 
JSON_Dir=~/json_files/ 
for ZipFile in $JSON_Dir/*.zip ; 
do /Applications/Couchbase\ Server.app/Contents/Resources/couchbase-core/bin/cbdocloader \ 
    -u Administrator -p s3kre7Pa55 -b MyBucketToLoad         \ 
    -n 127.0.0.1:8091 -s 1000 $ZipFile 
done 

ОБНОВЛЕНО: Имейте в виду, что этот скрипт будет работать только в том случае, если ваши данные отформатированы правильно или файлы меньше максимального размера одного документа размером 20 МБ. (Не ZipFile, но любой документ извлекается из архива)

Я создал запись в блоге, описывающее объемную загрузку из одного файла, а также и перечисленные здесь:

Bulk Loading Documents Into Couchbase

+0

Я пробовал но один файл не работал. Я попробую снова. Единственное, что cbcdocloader использует имя файла в качестве ключа. Это то, что делает ваша установка? Мне нужно, чтобы 25 миллионов + ключей – user1978109

+0

синтаксис, который я вставил, и процедура, которую я использовал, на Mac и Ubuntu, приходила непосредственно с сеанса, где я импортировал несколько миллионов ключей. (только 4M в моем случае). Единственной модификацией процедуры были имена файлов и т. Д. Убедитесь, что вы используете сжатые файлы. Там * может * быть лимит числа документов для каждого файла, но я не знаю об этом. У вас есть синтаксис и настройка, аналогичные тому, что я описал выше? –

+0

Я хотел бы указать еще одну вещь. Cbdocloader использует имена файлов как doc_id. Мой сценарий не работает. Вы можете предоставить постоянный ключ или вытащить указанный атрибут из json-документа и использовать его как ключ + хэш-значение документа. –

Смежные вопросы