我想上传一个psv文件,其中包含每天存储的医生,位置和练习的关键统计信息。
此条目的唯一键包括:
医师姓名,
练习名称,
位置名称和
服务日期。
四个领域都在一起。
Aerospike加载程序的Configuration file example仅显示带有单个密钥的版本,我没有看到多个条目的语法。
有人可以告诉我,如果可以这样做(使用已加载文件中的列配置列出多个关键字段),并向我展示示例。
答案 0 :(得分:3)
将密钥加入一个字符串。为了便于阅读,请使用":"之类的分隔符。
知道aerospike不存储原始密钥可能会有用,它会存储摘要(哈希)。
答案 1 :(得分:0)
关于"最佳方式"没有简单的答案。这取决于你想要以速度和规模查询的内容。您的数据模型将反映您希望如何读取数据以及延迟和吞吐量。
如果您想要特定数据的高速(1-5ms延迟)和高吞吐量(每秒100k),您需要在将数据写入Aerospike时聚合数据并使用复合键存储它将允许您快速获取数据,例如医生天位置。
如果您想要在一段时间内进行统计分析,并且查询可能需要几秒钟到几分钟,那么您可以将数据存储在结构较少的格式中并在其上运行Aerospike聚合,甚至使用Hadoop或直接在Aerospike数据上点火。
答案 2 :(得分:0)
您可以创建一个字节缓冲区并将字段转换为字节,然后将它们添加到字节缓冲区。但是在读取时,您需要知道dataType或键的格式,以便从字节缓冲区中提取它们。
var keyVal = new ArrayBuffer[Byte]
for ( j<- 0 until keyIndex.length)
{
val field = schema(keyIndex(j))
field.dataType match {
case value: StringType => {
keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[String].toByte)
}
case value: IntegerType => {
keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[Integer].toByte)
}
case value: LongType => {
keyVal = keyVal.+=(row(keyIndex(j)).asInstanceOf[Long].toByte)
}
}
}
val key: Key = new Key(namespace, set,keyVal.toArray)
KeyIndexes = array containing the index of key fileds
Schema = schema of the fileds.
row = a single record to be written.
如果您知道键的架构,则在提取值时如果您从int,int,Long创建了键,则可以通过first4bytes.toInt
和next4.toInt
以及Last8.toLong
提取。