2017-08-14 65 views
2

我是Aerospike的新手。我們正在爲我們的系統使用帶有Spark(Java)的Aerospike。在Java中使用Aerospike和Spark時設置TTL

我想每次將數據寫入Aerospike時都要爲數據幀設置TTL。但是,我甚至無法從文檔或Internet上找到這樣做的方法。

我現在寫的語法:

networkDs.write() 
     .mode(SaveMode.Overwrite) 
     .format("com.aerospike.spark.sql") 
     .option("aerospike.set", Const.AEROSPIKE_SET) 
     .option("aerospike.updateByKey", "id") 
     .save(); 

有人可以告訴我該怎麼做?

非常感謝。

回答

3

我不知道,我非常理解,但使用TTL而與aerospike節省,你應該把它存放在DataSet/DataFrame列將它保存在你的問題。

注:生存時間(TTL)可以單獨對每個記錄進行設置。

要啓用更新TTL和附加選項指定:

option("aerospike.ttlColumn", "expiry") 

這意味着TTL是你列expiry

我希望這會有所幫助。

有關更多信息,我建議您查看aerospiketutorial documentation

+0

感謝您的快速響應。實際上,當我打印輸出時(__ttl),當前模式已經有TTL的默認列。我是否還應該將上面的選項行包含到寫入操作中?此外,我沒有參數來指定確切的TTL,例如300或500? – tuancoltech

+0

是@tuancoltech。您需要指定列,我不確定是否有默認設置。 – eliasah

+0

我剛剛通過在我的對象中添加一個expiry字段進行測試,並且它可以工作。然而,通過這種方式,我們總是必須在我們原來的數據對象中創建一個額外的字段,這在我的拙見中是有點多餘的,因爲我認爲Aerospike有自己的機制來管理行的到期時間,而不管對象包含什麼信息。你覺得呢,@eliasah? – tuancoltech

相關問題