我想要上传一个psv文件,记录每天存储的医生,位置和练习的关键统计数据。使用多个字段作为钥匙在aerospike装载机
此条将包括一个独特的密钥:
医生的名字,
实践名字,
位置名称,
服务的日期。
四个领域在一起。
Configuration file example Aerospike装载机显示只有单键的版本,我没有看到多个条目的语法。
有人可以告诉我,如果这是可能做到的(有配置列出多个关键字段使用来自加载文件的列),并告诉我的例子。
我想要上传一个psv文件,记录每天存储的医生,位置和练习的关键统计数据。使用多个字段作为钥匙在aerospike装载机
此条将包括一个独特的密钥:
医生的名字,
实践名字,
位置名称,
服务的日期。
四个领域在一起。
Configuration file example Aerospike装载机显示只有单键的版本,我没有看到多个条目的语法。
有人可以告诉我,如果这是可能做到的(有配置列出多个关键字段使用来自加载文件的列),并告诉我的例子。
将键加入到一个字符串中。为了便于阅读,请使用分隔符“:”。
知道aerospike不存储原始密钥可能很有用,它会存储摘要(散列)。
对于“最佳方式”没有简单的答案,它取决于您想要以速度和比例进行查询。您的数据模型将反映您想要如何读取数据以及延迟和吞吐量。
如果您想要某条特定数据的高速(1-5ms延迟)和高吞吐量(每秒100k),您需要在将数据写入Aerospike并使用组合键存储数据时汇总数据这将允许您快速获取数据,例如医生一天地点。
如果你需要一段时间的统计分析,并且查询可能需要几秒到几分钟时间,那么你可以存储数据结构不那么格式,并运行Aerospike聚合,或者甚至使用Hadoop或Spark直接在Aerospike数据上。
您可以创建一个字节缓冲区并将字段转换为字节,然后将它们添加到字节缓冲区。但是在阅读时,您需要知道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的关键,只要你能由first4bytes.toInt
提取和next4.toInt
和Last8.toLong
。
对,如果您愿意,您可以选择花费存储空间来容纳原始键。摘要的好处是不管输入的大小,密钥总是20个字节。 –
制作一个字符串需要比箱子更多的空间。如果您使用'sendkey = true'存储密钥。 – Hammad