我正在尝试使用sqoop将一个json文档从hadoop hdfs加载到couchbase中。我能够正确加载文档,但文档的ttl为0。我想在一段时间内过期的文件,而不是让他们永远活着。对于sqoop的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条答案
按热度按时间7z5jn7bk1#
我不认为有一个简单的ui/设置可以做到这一点。必须在连接器中修改代码。
qlzsbp2j2#
当前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值并将其放入db configuration对象中,这样就可以在代码中使用它。