如何以.json格式获取aerospike数据备份?

时间:2018-04-17 06:35:33

标签: aerospike

我想以.json格式进行Aerospike数据备份。

使用timestamp参数和c #windows服务定期进行备份。

2 个答案:

答案 0 :(得分:2)

目前唯一支持的格式是aerospike documentation中提到的文本格式。

虽然一种方法是以文本格式备份文件,并使用某种工具将其解析为JSON。这是一个火花/ scala示例,因为我有一个非常巨大的,在我的情况下使用spark是有意义的,但你可以使用其他技术以编程方式实现相同的结果。

val conf = new org.apache.hadoop.mapreduce.Job().getConfiguration
conf.set("textinputformat.record.delimiter", "+ n namespace")

val rawRDD = sc.newAPIHadoopFile( "/path/to/file", classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf).map{ case (_, v) => v.toString }

val rdds = rawRDD.map(x => {
  val record = x.split('\n')
  var key = ""
  var value = ""
  for (line <- record){
    if(line.trim().startsWith("- S key ") ){
      key = line.split("- S key ")(1).split(' ')(1)
    } else if(line.trim().startsWith("- S value ") ){
      value = line.split("- S value ")(1).split(' ')(1)
    }
  }
  (key,value)
})

注意:上面的代码演示了如何解析文本文件并且它不是生产等级代码,因此它很容易破坏并且无法覆盖边缘情况。之后你还需要将RDD转换为JSON。

答案 1 :(得分:1)

如果要处理asbackup生成的备份中的数据,则应解析其输出的.asb数据文件。

每条记录都保存在一个单独的行中,并且backup file format有一个非常明确的规范。您可以轻松找到记录的每个区域(字段)的数据类型。