【大数据存储与处理】第四次作业
一. 简答题(共8题)
1. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,写出命令,并把结果截图一起提交。对testdb数据库items集合进行聚合分组,然后在统计卖出的平均数量(“quantity”)。
正确答案:
 db.items.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: group:{_id:"pnumber",average:{ 
     
      
       
       
         a 
        
       
         v 
        
       
         g 
        
       
         : 
        
       
         " 
        
       
      
        avg:" 
       
      
    avg:"quantity"}}}])
 
2. (简答题)此题为HBase操作题,使用在线平台或分享的虚拟机平台软件,查询student表中StuInfo列族Age列中值等于19的所有键值对。
正确答案:
 scan ‘student’,{COLUMN=>‘StuInfo:Age’,FILTER=>“SingleColumnValueFilter(‘StuInfo’,‘Age’,=,‘binary:19’)”}
 
3. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,写出命令,并把结果截图一起提交。使用游标,输出testdb数据库book集合中“price”>=60的所有文档信息。
正确答案:
 var cursor = db.book.find({“price”:{$gte:60}})
while(cursor.hasNext()) {printjson(cursor.next())}
 
4. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,写出命令,并把结果截图一起提交。修改test数据库sales集合中所有quantity键值为10的文档改成quantity键值为80。
正确答案:
 db.sales.update({“quantity”:10},{$set:{“quantity”:80}},0,1)
db.sales.find()
 
5. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,写出命令,并把结果截图一起提交。查询test数据库book集合中price在[45,60)范围、或者出版社是“机械工业出版社”的图书信息(即45=<price<60),要求返回by、price、title键值对,其他键值对不显示。
正确答案:
 db.book.find({KaTeX parse error: Expected '}', got 'EOF' at end of input: or:[{"price":{"gte":45,“$lt”:60}},{“by”:“机械工业出版社”}]},{“_id”:0,“by”:1,“price”:1,“title”:1})

6. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,写出命令,并把打开result.txt结果截图一起提交。把testdb数据库book集合中的文档数据导出,保存到/home/hadoop/result.txt。
我的答案:
 mongoexport --db testdb --collection book --out /home/hadoop/result.txt
正确答案:
 mongoexport -h 192.168.226.132:27017 -d testdb -c book -o /home/hadoop/result.txt
 
7. (简答题)
建立mytest数据库,建立fruit集合,键值对输入如下表文档,并截图输入结果。

正确答案:
 db.fruit.insert({“_id”:1,“fruits”:[“apple”, “banana”, “peach”]})
db.fruit.insert({“_id”:2,“fruits”:[ “apple”,“cherry”,“orange”]})
 
8. (简答题)此题为mongodb操作题,使用在线平台或分享的虚拟机平台软件,在testdb数据库中c3集合中第一条文档里的fruit数组添加信息:grape。写出命令,并把结果截图一起提交。
正确答案:
 db.c3.update({“_id”: ObjectId(“610d803f8bbd7614abe4ad36”)},{$addToSet:{fruit:“grape”}})
db.c3.find()

二. 应用题(共4题)
9. (应用题)使用在线平台或分享的虚拟机平台软件,写出命令,并把运行结果截图一起提交。使用MongoDB中的MapReduce查询testdb数据库items集合中数量“quantity”大于5的商品编号(“pnumber”)。
正确答案:
 var map=function(){emit(this.pnumber,this.quantity)}
var reduce=function(key,value){return value.join(‘,’)}
var options={query:{quantity:{$gt:5}},out:“pnumber”}
db.items.mapReduce(map,reduce,options);
db.pnumber.find()
 
10. (应用题)MongoDB python编程。使用在线平台或分享的虚拟机平台软件,写出程序,并把运行结果截图一起提交。Python编程新建runoobdb数据库中并在runoobdb数据库新建commodity集合,并插入文档{ “_id” : 1, “item” : “abc”, “price” : 10, “quantity” : 2 },并打印出该集合中的文档数据。
正确答案:
 import pymongo
myclient = pymongo.MongoClient(“mongodb://192.168.126.140:27017/”)
mydb = myclient[“runoobdb”]
mycol = mydb[“commodity”]
mydict = {“_id” : 1, “item” : “abc”, “price” : 10, “quantity” : 2 }
x = mycol.insert_one(mydict)
for result in mycol.find():
print(result)
 
11. (应用题)
此题为操作题,使用在线平台或分享的虚拟机平台软件。文档替换,把mytest数据库中mybook集合中如图1所示的文档替换成图2的新文档,如集合不存在,自行创建并录入数据。列出相关命令或程序,结果截图。(7分)
 
正确答案:
 use mytest
db.mybook.insert({“_id”:2,“title”:“Nosql”,“by”:“ptpress”,“author”:“Jack”,“price”:45,“description”:“Database”})
var u=db.mybook.findOne({“title”:“Nosql”})
u.bookinfo={“author”:u.author,“price”:u.price}
u.bookname=u.title
delete u.author
delete u.price
delete u.title
db.mybook.update({“title”:“Nosql”},u)
db.mybook.find().pretty()
12. (应用题)HBase python编程,使用在线平台或分享的虚拟机平台软件,写出程序,并把运行结果截图一起提交。编程在HBase数据库中新建test数据表,列族为:cf,并打印出所有数据库表名。
正确答案:
 (1)启动驱动程序命令:
hbase thrift start
(2)参考程序如下:
from thrift.transport import TSocket
from thrift.protocol import TBinaryProtocol
from thrift.transport import TTransport
from hbase import Hbase
from hbase.ttypes import *
transport = TSocket.TSocket(‘192.168.126.140’,9090)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
transport.open()
contents = ColumnDescriptor(name=‘cf:’, maxVersions=1)
client.createTable(‘test’, [contents])
result=client.getTableNames()
print (result)
(3)运行结果:

MongoDB:
-  聚合: - 使用 $group阶段对文档进行聚合操作,可以对数据进行分组、计数等操作。
 db.collection.aggregate([ { $group: { _id: "$field", count: { $sum: 1 } } } ])
- 使用 
-  查询: - 使用 find命令进行查询,并通过条件筛选数据。
 db.collection.find({ field: value })
- 使用 
-  更新: - 使用 update命令修改文档中的数据。
 db.collection.update({ field: value }, { $set: { newField: newValue } })
- 使用 
-  导出: - 使用 mongoexport命令导出集合数据到 JSON 或 CSV 文件。
 mongoexport --db dbName --collection collectionName --out outputFile.json
- 使用 
-  数组操作: - 使用 $addToSet操作符将元素添加到数组中,确保唯一性。
 db.collection.update({ _id: docId }, { $addToSet: { arrayField: newValue } })
- 使用 
-  MapReduce: - 使用 MapReduce 进行复杂的数据分析。
 db.collection.mapReduce( function() { emit(this.field, 1); }, function(key, values) { return Array.sum(values); }, { out: "resultCollection" } )
-  Python编程: - 使用 PyMongo 库与 MongoDB 进行交互。
 from pymongo import MongoClient client = MongoClient('mongodb://localhost:27017/') db = client['dbName'] collection = db['collectionName']
-  索引: - 使用 createIndex创建索引,提高查询性能。
 db.collection.createIndex({ field: 1 })
- 使用 
-  删除: - 使用 remove或deleteMany、deleteOne删除文档。
 db.collection.remove({ field: value })
- 使用 
-  事务: - 使用 startTransaction和commitTransaction等命令进行事务管理。
 
- 使用 
-  备份与恢复: - 使用 mongodump和mongorestore命令进行数据库备份和恢复。
 
- 使用 
HBase:
-  查询: - 使用带有过滤器的 scan命令进行数据扫描。
 Scan scan = new Scan(); scan.setFilter(new SingleColumnValueFilter(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), CompareOperator.EQUAL, Bytes.toBytes("value")));
- 使用带有过滤器的 
-  Python编程: - 使用 HappyBase 库在 Python 中创建表格和获取表格名称。
 import happybase connection = happybase.Connection('localhost') table = connection.table('tableName')
-  写入: - 使用 Put命令将数据插入 HBase 表中。
 Put put = new Put(Bytes.toBytes("rowKey")); put.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"), Bytes.toBytes("value"));
- 使用 
-  删除: - 使用 Delete命令删除表中的数据。
 Delete delete = new Delete(Bytes.toBytes("rowKey")); delete.addColumn(Bytes.toBytes("family"), Bytes.toBytes("qualifier"));
- 使用 
-  版本控制: - HBase支持多版本数据,可以通过时间戳来检索不同版本的数据。
 
-  列簇: - 表可以包含多个列簇,用于组织和存储相关的列。
 
-  过滤器: - 使用过滤器可以在扫描表时限制返回的结果,提高检索效率。
 
这是一个基本的填充,如果有进一步的问题或需要详细的解答,请随时告诉我。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!