2015-04-13 7 views
1

Я пытаюсь загрузить документ JSON из Hadoop HDFS в Couchbase, используя sqoop. Я могу правильно загрузить документы, но TTL документа - 0. Я хотел бы истечь документы в течение определенного периода времени и не заставлять их жить вечно. Возможно ли это с соединителем Couchbase для Sqoop?Могу ли я установить TTL для документов, загруженных в Couchbase из HDFS, используя Sqoop?

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

документ выглядит следующим образом:

[email protected]{"key": "key1", "message": "A message here"} 
[email protected]{"key": "key2", "message": "Another message"} 

sqoop вызов выглядит следующим образом:

sqoop export -D mapred.map.child.java.opts="-Xmx4096m" \ 
      -D mapred.job.map.memory.mb=6000 \ 
      --username ${COUCHBASE_BUCKET} \ 
      --password-file ${COUCHBASE_PASSWORD_FILE} \ 
      --table ignored \ 
      --connect ${COUCHBASE_URL} \ 
      --export-dir ${INPUT_DIR} \ 
      --verbose \ 
      --input-fields-terminated-by '@' \ 
      --lines-terminated-by '\n' \ 
      -m 2 

Спасибо за вашу помощь.

ответ

0

Я не думаю, что для этого есть простой пользовательский интерфейс/настройки. Код должен быть изменен в соединителе.

0

В текущей версии плагина sqoop нет опции TTL. Однако, если вы просто хотите установить один и тот же TTL для всех импортированных объектов, вы можете легко добавить код самостоятельно. Посмотрите на строку 212 здесь: https://github.com/couchbase/couchbase-hadoop-plugin/blob/master/src/java/com/couchbase/sqoop/mapreduce/db/CouchbaseOutputFormat.java#L212

Вам просто нужно добавить параметр TTL в вызовы set. Если вы хотите быть в курсе, вы можете взять значение TTL из командной строки и поместить его в объект конфигурации DB, чтобы вы могли использовать его в коде.