【发布时间】:2016-09-20 09:22:11
【问题描述】:
我已经阅读了一个文本文件并使用 python 将数据插入到 Riak DB。
csv_data = csv.reader(file('abc.txt'))
txt 文件包含两个用@@ 分隔的字段
tempstring = str(row).split('@@')
并插入 riak DB
new_user = user_buckets.new(FirstUser,data={
'user':FirstUser,
'friendlist':FriendList,
'is_active':True
})
new_user.store()
要从 Riak DB 获取数据,我使用 Map
user_buckets.map("""
function(v) {
var data = JSON.parse(v.values[0].data);
if(data.is_active == true) {
return [[v.key, data]];
}
return [];
}
""")
for result in user_buckets.run():
print "%s - %s" % (result[0], result[1])
它给出的格式
Dinesh - {u'friendlist': [u'Bakshi', u' Kishna'], u'is_active': True, u'user': u'Dinesh'}
如何在输出格式中删除 u?插入到 Riak 时转换为字符串会导致形成 u 吗?
编辑 1
我使用 mapreduce 获取了 Riak DB
function(v) {
var data = JSON.parse(v.values[0].data);
var mapped = [];
var grouping = [];
if(data.is_active == true) {
userValue = data.user;
friendListValue = data.friendlist;
for (var i=0; i<friendListValue.length; i++){
friendValue = friendListValue[i];
mapped.push([userValue, friendValue, friendListValue]);
grouping.push([mapped[i]]);
}
}
}
这里的分组是多维数组,其中包含类似的数据
示例
[u'Dinesh', u'Shiva', [u'Bakshi', u' Kishna', u' Hanks', u' Shiva', u' Bindu', u' Hari', u' Karma', u' Sita']]
[u'Shiva', u'Dinesh', [u'Hanks', u' Tom', u' Karma', u' Hari', u' Dinesh']]
当我使用
比较数组中的值时if(grouping[j][0]==grouping[k][1]&& grouping[j][1]==grouping[k][0])
在上面给出的类似示例情况下,它应该返回 true,但它给出了错误。所以我认为这是由于你。现在我如何比较数组并找出匹配的情况?这里我认为我在 if 条件下犯了一个错误。
【问题讨论】:
-
u仅表示 unicode,实际上并不存在;它只是打印数据时的视觉标记。但是,Dinesh不是 JSON,而是 Python 字典。 -
从 Riak 获取的数据格式如上例所示。我想比较这些值(如上比较条件)然后它给出了错误。对于上面的示例,它应该返回 true 但无法获取它。
-
您是否点击了标记为重复的链接并阅读了 Daniel Roseman 的答案?
True和“错误”之间是有区别的。错误是什么?
标签: javascript python mapreduce riak