成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用pymongo解析文本格式日志后放入mongo

Freelander / 1238人閱讀

摘要:思路拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上以二進(jìn)制讀的形式打開(kāi)。獲取數(shù)據(jù)庫(kù)獲取表插入到數(shù)據(jù)庫(kù)

思路

拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上-rb以二進(jìn)制讀的形式打開(kāi)。

文件格式如下:

b’2019-03-29 10:55:00	0192.168.31.123:8080	5	12345678	0	44560	953864	2	192.168.31.123	md5
’

可以看到日志里面的分隔符是制表符t,行末尾有換行符n

處理日志文件的基本邏輯

鏈接數(shù)據(jù)庫(kù)

逐行讀txt

將一行的數(shù)據(jù)分割為數(shù)組

將數(shù)據(jù)放入list

將list逐條轉(zhuǎn)化為json

存入數(shù)據(jù)庫(kù)

分片集群的mongo鏈接

用于存儲(chǔ)日志的mongo集群有三個(gè)分片:flux-stat-1.mongo:27017,flux-stat-2.mongo:27017和flux-stat-3.mongo:27017.

假設(shè)用戶名是flux-stat,密碼是flux-stat-mongo123,登錄方法:

from pymongo import MongoClient
import urllib.parse
#創(chuàng)建MongoDB鏈接對(duì)象
username = urllib.parse.quote_plus(‘flux-stat’)
password = urllib.parse.quote_plus(‘flux-stat-mongo123’)
uri = "mongodb://%s:%[email protected]:27017, flux-stat-2.mongo:27017, flux-stat-3.mongo:27017/admin" % (username,password)
client = MongoClient(uri)

注意:username和password必須要進(jìn)行轉(zhuǎn)換,否則鏈接不正確

pymongo逐行讀取日志文本
with open(“d:/user/ServerLog/test.txt”,’rb’) as file:
    for line in file:
        #這里放操作
file.close()
分割日志內(nèi)容轉(zhuǎn)化為json,并把每行json放到數(shù)組中
#引入json模塊
import json
total=[]
logList = line.split(‘	’)    #line分割為list
keyList = [‘time’,’status’,’ip’,’type’,’userid’,’v1’,’v2’,’v3’,’v4’,’ip’,’md5’]    #key的list
logDict = dict(zip(keyList, logList))    #把二者以字典的方式拼起來(lái)
logJson = json.dumps(logDict)    #把字典轉(zhuǎn)換為string形式的json
#json轉(zhuǎn)字典的方法為dictinfo = json.loads(json_str)
total.append(logJson)
日志存入mongo

insert_one和insert_many是兩種插入的方式,但是采用insert_one進(jìn)行逐條插入會(huì)進(jìn)行大量的訪問(wèn),大幅降低插入效率,采用insert_many進(jìn)行json為基本單位的list批量插入,效率明顯提高。

db = client["log"]             #獲取數(shù)據(jù)庫(kù)
coll = db[‘data’]              #獲取表
coll.insert_many(total)        #插入到數(shù)據(jù)庫(kù)

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/43697.html

相關(guān)文章

  • 使用pymongo解析文本格式日志放入mongo

    摘要:思路拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上以二進(jìn)制讀的形式打開(kāi)。獲取數(shù)據(jù)庫(kù)獲取表插入到數(shù)據(jù)庫(kù) 思路 拿到的文本是二進(jìn)制的,在查看文件的時(shí)候可以加上-rb以二進(jìn)制讀的形式打開(kāi)。 文件格式如下: b’2019-03-29 10:55:00 0192.168.31.123:8080 5 12345678 0 44560 953864 2 192.168.31.123 md5 ’ ...

    Meathill 評(píng)論0 收藏0
  • 分析了京東內(nèi)衣銷(xiāo)售記錄,告訴你妹子們的真Size!

    摘要:今天閑暇之余寫(xiě)了一個(gè)爬蟲(chóng)例子。后兩個(gè)為分頁(yè)參數(shù),是每個(gè)商品的,通過(guò)這個(gè)去獲取商品的評(píng)價(jià)記錄,所以我們只需要知道每個(gè)商品的就輕而易舉的獲取評(píng)價(jià)了。大概了解了整個(gè)流程,就可以開(kāi)始我們的爬蟲(chóng)工作了。 今天閑暇之余寫(xiě)了一個(gè)爬蟲(chóng)例子。通過(guò)爬蟲(chóng)去爬取京東的用戶評(píng)價(jià),通過(guò)分析爬取的數(shù)據(jù)能得到很多結(jié)果,比如,哪一種顏色的胸罩最受女性歡迎,以及中國(guó)女性的平均size(僅供參考哦~) 打開(kāi)開(kāi)發(fā)者工具-ne...

    Coly 評(píng)論0 收藏0
  • 經(jīng)驗(yàn)拾憶(純手工)=> MongoDB與PyMongo語(yǔ)法對(duì)比解析

    摘要:舉個(gè)栗子你有一個(gè)箱子,里面有一個(gè)兒子級(jí)別和孫子級(jí)別的箱子共層現(xiàn)在你把孫子級(jí)別的箱子單獨(dú)拿出來(lái),把整個(gè)箱子替換掉就是這種思想。。。自己體會(huì)吧這種語(yǔ)法,好像列表的切片賦值。。官方建議我們用它的好處是把和由兩個(gè)函數(shù)調(diào)用變?yōu)閭€(gè)參數(shù)傳進(jìn)去了。 閱讀須知 由于是對(duì)比書(shū)寫(xiě): M: 代表 Mongo原生語(yǔ)法 P: 代表 PyMongo書(shū)寫(xiě)方法 后面提到:同上 字眼: ...

    mo0n1andin 評(píng)論0 收藏0
  • scrapy 實(shí)戰(zhàn)練習(xí)

    摘要:爬取百思不得姐首先一步一步來(lái),我們先從爬最簡(jiǎn)單的文本開(kāi)始。將百思不得姐段子保存到中別忘了將管道加到配置文件中。雖然我只是簡(jiǎn)單的爬了百思不得姐,不過(guò)這些方法可以應(yīng)用到其他方面,爬取更多更有用的數(shù)據(jù)。 前一篇文章介紹了很多關(guān)于scrapy的進(jìn)階知識(shí),不過(guò)說(shuō)歸說(shuō),只有在實(shí)際應(yīng)用中才能真正用到這些知識(shí)。所以這篇文章就來(lái)嘗試?yán)胹crapy爬取各種網(wǎng)站的數(shù)據(jù)。 爬取百思不得姐 首先一步一步來(lái),我...

    betacat 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<