2015-09-26 21 views
4

我已將JSON文件轉換爲CSV格式,現在使用aerospike加載器將Aerospike中的CSV加載。我可以做到這一點爲簡單的結構,但如何修改allDatatype.json的內容加載在Aerospike嵌套的CSV文件?如何使用aerospike loader在aerospike中加載嵌套的csv文件?

https://github.com/aerospike/aerospike-loader/tree/master/example

JSON文件

{ 
"centers" : { 
"ER" : { 
"admin":{ 
"users" : { 
    "emp1" : { 
    "password" : "abcdefgh", 
    "username" : "pankaj-roy" 
    }, 
    "emp2" : { 
    "password" : "12345678", 
    "username" : "niketan-shah" 
    } 
} 
} 
} 
} 
} 

CSV文件

centers.ER.admin.users.emp2.username,centers.ER.admin.users.emp2.password, centers.ER.admin.users.emp1.username,centers.ER.admin.users.emp1.password 
niketan-shah,12345678,pankaj-roy,abcdefgh 
+3

如果你想保留的JSON結構,爲什麼轉換爲嵌套CSV,然後加載到Aerospike。你能不能將整個JSON序列化爲字節(使用protobuf或其他),並將其作爲blob存儲在Aerospike中? Aerospike的CSV加載器無法處理嵌套的CSV。它假定CSV是表格性質的。 – sunil

+1

如果我們將它作爲blob存儲在aerospike中的bin中,我將能夠查詢包含blob的單個bin嗎? – hmims

+2

您將收到整個內容。即使您的記錄有多個垃圾箱,您也可以選擇一個垃圾箱。您無法查詢垃圾箱的子組件。請注意,Aerospike不是一家文檔商店。 – sunil

回答

3

我的理解,我必須承認是有限的,因爲我纔剛剛開始尋找到塞式是忘記你想將整個對象存儲在一個對象中(正如上面在註釋中所建議的那樣,因爲這更像是一個文檔存儲)。相反,您需要在鍵值術語的世界中思考它。我的理解是,你的JSON有效負載超過應貯存在塞式,像這樣

Bin=users 
Set=creds 
Key=(username, "pankaj-roy") 
bin=(password, "abcdefgh") 
bin=(role, "admin")` 

那麼你可以做這樣的事情:

user_key = new Key("users", "creds", username); 
user_records = client.get(null, user_key); 
console.printf("username: " + user_records.getValue("username") + "\n"); 
console.printf("password: " + user_records.getValue("password") + "\n");