我可以使用Sqoop为从HDFS加载到Couchbase的文档设置TTL吗?

时间:2015-04-13 17:04:02

标签: hadoop hdfs couchbase sqoop ttl

我正在尝试使用sqoop将Hadoop HDFS中的JSON文档加载到Couchbase中。我能够正确加载文档,但文档的TTL是0.我想在一段时间内使文档失效,而不是让它们永远存在。是否可以使用Schoop的Couchbase连接器?

正如我所说,文件正确加载,没有TTL。

该文件如下:

key1@{"key": "key1", "message": "A message here"}
key2@{"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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我认为没有简单的用户界面/设置。必须在连接器中修改代码。

答案 1 :(得分:0)

当前的sqoop插件版本中没有TTL选项。但是,如果您只想为所有导入的对象设置相同的TTL,则可以非常轻松地自行添加代码。请看这里的第212行:https://github.com/couchbase/couchbase-hadoop-plugin/blob/master/src/java/com/couchbase/sqoop/mapreduce/db/CouchbaseOutputFormat.java#L212

您只需要为set来电添加TTL参数即可。如果您想彻底了解它,可以从命令行获取TTL值并将其放在DB配置对象中,以便在代码中使用它。