我可以使用sqoop为从hdfs加载到couchbase的文档设置ttl吗?

zaqlnxep  于 2021-05-30  发布在  Hadoop
关注(0)|答案(2)|浏览(390)

我正在尝试使用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

谢谢你的帮助。

7z5jn7bk

7z5jn7bk1#

我不认为有一个简单的ui/设置可以做到这一点。必须在连接器中修改代码。

qlzsbp2j

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对象中,这样就可以在代码中使用它。

相关问题