2024年大数据最全基于大数据的房价分析--2,字节跳动算法工程师面试总结

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

self.requestNum = requestNum

#带解析数据集合

self.sourceCol = self.client[sourceDB][sourceCol]

#用于存储结果的集合

self.locationCol = self.client[locationDB][locationCol]

self.oklength = 0

self.errorlength = 0

#用于解析每一条数据的方法

def parseData(self,data):

#数据集中没有带解析的数据,解析该条数据

if self.locationCol.count({“_id”:data[“_id”]}) <= 0:

if self.locationCol.count({“address”:data[“address”]}) > 0:

print(“同一地址不再解析”+data[‘address’])

content = self.locationCol.find_one({“address”:data[“address”]})

a = {‘_id’:data[‘_id’],

“size”:data[‘size’],

“orient”:data[‘orient’],

“roomNum”:data[‘roomNum’],

“url”:data[‘fromUrl’],

“unitPrice”:data[‘unitPrice’],

“sumPrice”:data[‘sumPrice’],

“ln”:content[‘ln’],

“lat”:content[‘lat’],

“address”:data[‘address’],

“time”:data[‘nowTime’],

“city”:data[‘city’]}

self.locationCol.insert(a)

self.sourceCol.update({“_id”:data[“_id”]},{“$set”:{“status”:“OK”}})

return

result = self.bParser.parse(data[“address”],“json”,data[“city”])

#根据返回码判断解析结果是否正确,如果不正确,去掉城市参数重试

if result[0] and result[0][‘status’] != 0:

result = self.bParser.parse(data[“address”],“json”)

if not result[0]:

return

jsonResult = result[0]

urlResult = result[1]

ln = None

lat = None

if jsonResult[‘status’] == 0:

ln = jsonResult[‘result’][‘location’][‘lng’]

lat = jsonResult[‘result’][‘location’][‘lat’]

else:

try:

print(“地址解析错误,status:”+str(jsonResult[‘status’])+“,msg:”+jsonResult[‘msg’]+“,errorUrl:”+urlResult)

self.sourceCol.update({“_id”:data[“_id”]},{“$set”:{“status”:“ERROR”}})

self.errorlength += 1

except:

print(“没有错误信息,直接输出信息”+str(jsonResult))

return

try:

a = {‘_id’:data[‘_id’],

“size”:data[‘size’],

“orient”:data[‘orient’],

“roomNum”:data[‘roomNum’],

“url”:data[‘fromUrl’],

“unitPrice”:data[‘unitPrice’],

“sumPrice”:data[‘sumPrice’],

“ln”:ln,

“lat”:lat,

“address”:data[‘address’],

“time”:data[‘nowTime’],

“city”:data[‘city’]}

except:

print(“存储数据异常,检查该条数据sumprice:”+data[‘sumPrice’]+data[‘address’])

self.sourceCol.update({“_id”:data[“_id”]},{“$set”:{“status”:"ERROR "}})

return

self.locationCol.insert(a)

self.oklength += 1

print(“成功插入第%s条数据,解析的地址为:%s”%(self.oklength,data[‘address’]))

self.sourceCol.update({“_id”:data[‘_id’]},{“$set”:{“status”:“OK”}})

else:

self.sourceCol.update({“_id”:data[‘_id’]},{“$set”:{“status”:“OK”}})

print(“已经存在,不需要解析,状态设置为以解析”)

#解析main方法

def parse(self,Number = None):

pool=gevent.pool.Pool(self.requestNum)

datas = self.sourceCol.find({“status”:“SUBSPENDING”})

if Number:

datas = datas.limit(Number)

for data in datas:

greenlet = gevent.spawn(self.parseData,data)

pool.add(greenlet)

pool.join()

print(“解析完毕,共成功%s条,失败%s条”%(self.oklength,self.errorlength))

def __del(self):

self.client.close()

if name == “main”:

starttime = datetime.datetime.now()

d = LocationDumper(MONGO_IP,

MONGO_PORT,

LOCATION_DB,

LOCATION_COLL,

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 8
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值