張紅軍 王豫鑫 楊萬里 祁永釗 李登明
摘要:隨著互聯(lián)網(wǎng)的不斷發(fā)展,應(yīng)用程序、數(shù)據(jù)正在迅速增長,大規(guī)模數(shù)據(jù)存儲成為大數(shù)據(jù)技術(shù)研究重點,借助數(shù)據(jù)挖掘技術(shù)能更好地為決策者提供信息支撐。容錯技術(shù)是大數(shù)據(jù)處理領(lǐng)域中一個前沿且極具挑戰(zhàn)性的研究課題。該文依據(jù)當(dāng)前的研究現(xiàn)狀和進展,通過對大數(shù)據(jù)時代數(shù)據(jù)特征的分析,結(jié)合當(dāng)前技術(shù)發(fā)展趨勢,運用Python技術(shù)設(shè)計數(shù)據(jù)挖掘中代碼容錯技術(shù)的改進,并用算法進行實現(xiàn)。測試結(jié)果表明,該算法運行良好,系統(tǒng)的健壯性和可靠性大大提高,為大數(shù)據(jù)和數(shù)據(jù)挖掘提供理論基礎(chǔ),為海量數(shù)據(jù)的安全可靠挖掘提供科學(xué)有效的技術(shù)支撐。
關(guān)鍵詞:大數(shù)據(jù);容錯技術(shù);算法;關(guān)鍵技術(shù);健壯性
中圖分類號:TP312 文獻標(biāo)識碼:A
文章編號:1009-3044(2020)09-0016-03
1 背景
隨著互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,大量文字、圖形、視頻、音頻、Web頁面等多種類型復(fù)雜的數(shù)據(jù)信息在信息檢索、社交網(wǎng)絡(luò)、物聯(lián)網(wǎng)、車載網(wǎng)等諸多新興行業(yè)廣為應(yīng)用,數(shù)據(jù)規(guī)模呈爆炸式增長,數(shù)據(jù)量成為信息社會增長最快的資源之一。與其同時,數(shù)據(jù)挖掘近年來也引起信息產(chǎn)業(yè)界的極大關(guān)注,各行各業(yè)的人們迫切需要從大量數(shù)據(jù)中提取或轉(zhuǎn)換為有用的信息和知識,并將獲取的知識和信息廣泛應(yīng)用于各類領(lǐng)域。
由于分布式存儲系統(tǒng)中節(jié)點數(shù)量寵大,不斷增長的海量數(shù)據(jù)需要被安全可靠存儲,常常會產(chǎn)生各類意外故障,導(dǎo)致數(shù)據(jù)節(jié)點失效情況頻繁,采用容錯技術(shù)可以避免部分存儲節(jié)點失效的情況下,數(shù)據(jù)仍然能夠正常讀取和下載,因此,容錯技術(shù)成為大數(shù)據(jù)挖掘處理中不容忽視的重要技術(shù)。
2 數(shù)據(jù)挖掘
2.1 相關(guān)概念
大數(shù)據(jù)是指在是指在一定時間范圍內(nèi)無法使用傳統(tǒng)數(shù)據(jù)庫工具對其進行捕捉、管理、計算、分析和處理的數(shù)據(jù)集合。大數(shù)據(jù)具有4V特征:Volume(大容量)、Variety(多樣化)、Velocity(高速性)和Value(價值性)。
數(shù)據(jù)挖掘是在大數(shù)據(jù)中通過算法搜索隱藏于其中信息的過程,通常通過在線分析處理、機器學(xué)習(xí)、專家系統(tǒng)、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)庫、可視化和模式識別等諸多技術(shù)來實現(xiàn)。數(shù)據(jù)挖掘是人工智能(AI)研究的熱點。
基金資助:河南省科技攻關(guān)項目(項目編號:182102210208);河南省高等學(xué)校重點科研項目(項目編號:18A520013);河南省教育科學(xué)十三五規(guī)劃一般課題(項目編號:2018 -JKGHYB-0407);河南省高等學(xué)校青年骨干教師培養(yǎng)計劃(項目編號:2018GGJS196);河南省教師教育課程改革研究項目(項目編號:2019-JSJYZD-041);國家級大學(xué)生創(chuàng)新創(chuàng)業(yè)訓(xùn)練計劃項目 (項目編號:201913504001)
作者簡介:張紅軍(1979-),男,河南平輿縣人,副教授,碩士,主要研究方向為大數(shù)據(jù)技術(shù);王豫鑫(1998-),男,本科生;楊萬里(1998-),男,本科生;祁永釗(1998-),男,本科生;李登明(1998-)男,本科生。
容錯技術(shù)是在系統(tǒng)在運行時,異常錯誤被激活的狀態(tài)下,系統(tǒng)因其算法的健壯性,依舊能正常運行而不會出現(xiàn)崩潰死機等意外,其基本思想是使系統(tǒng)內(nèi)潛在的差錯對可靠性的影響縮小控制到最低程度。在一些應(yīng)用場景,如航空航天、交通實時監(jiān)控、金融服務(wù)、醫(yī)療救援等特定行業(yè),一次系統(tǒng)錯誤的發(fā)生會帶來無法估計的損失和后果,在這些系統(tǒng)的關(guān)鍵設(shè)計中采用容錯技術(shù),從而確保運行中突發(fā)的計算機錯誤不會導(dǎo)致整個系統(tǒng)的崩潰。
2.2 Python技術(shù)下的數(shù)據(jù)挖掘
作為一種面向?qū)ο蟮慕忉屝陀嬎銠C編程語言,PYthon以其開源共享、函數(shù)式編程、語潔簡潔清晰、擁有功能強大的標(biāo)準(zhǔn)庫和擴展庫、計算生態(tài)等諸多特點一直位居各大編程語言網(wǎng)站排行榜前列。
Python擁有15萬個第三方擴展庫,其中jieba庫、Json庫、Requests庫、Scrapy庫、numpy庫使得數(shù)據(jù)挖掘變得簡單快捷高效。對于數(shù)據(jù)挖掘來講,Python對數(shù)據(jù)清洗、數(shù)據(jù)探索、建立寬表、變量篩選、建模、模型參數(shù)優(yōu)化、模型輸出、模型投產(chǎn)等等一系列環(huán)節(jié)均有成熟的“包”進行支持,而在建模環(huán)節(jié),除了對傳統(tǒng)時序、Logistic、決策樹等算法的支持,Python對于數(shù)據(jù)的處理速度均極大的超過了MySQL數(shù)據(jù)庫。在實際的挖掘項目中,在面臨著需要計算幾千甚至上萬特征值的情況下,通過Python將可以從代碼量和運算速度兩方面極大提高寬表制作效率,甚至完成傳統(tǒng)SQL數(shù)據(jù)庫難以完成的工作。
2.3 Python技術(shù)下的數(shù)據(jù)預(yù)處理
在進行數(shù)據(jù)挖掘之前,首先要做的一步是對已有數(shù)據(jù)進行預(yù)處理。數(shù)據(jù)預(yù)處理指的是對數(shù)據(jù)進行初步處理,把臟數(shù)據(jù)(即影響結(jié)果準(zhǔn)確率的數(shù)據(jù))處理掉,否則很容易影響最終的結(jié)果。如果連初始數(shù)據(jù)都是不正確的,那么就無法保證最后的結(jié)果的正確性。只有對數(shù)據(jù)進行預(yù)處理,保證其準(zhǔn)確性,才能保證最后結(jié)果的正確性。常見的數(shù)據(jù)預(yù)處理方法包括缺失值處理、異常值處理和數(shù)據(jù)集成。其中異常值產(chǎn)生的原因往往是數(shù)據(jù)在采集時發(fā)生了錯誤,如在采集數(shù)字66時發(fā)生了錯誤,誤將其采集成660。在處理異常值之前,需要先發(fā)現(xiàn)這些異常值數(shù)據(jù),往往可以借助畫圖的方法來發(fā)現(xiàn)這些異常值數(shù)據(jù)。在對異常值數(shù)據(jù)處理完成之后,原始數(shù)據(jù)才會趨于正確,才能保證最終結(jié)果的準(zhǔn)確性。
3 Python在數(shù)據(jù)挖掘中異常容錯處理
3.1異常處理
異常(Exception)指程序運行過程中出現(xiàn)的非正?,F(xiàn)象,如數(shù)據(jù)采集錯誤、數(shù)據(jù)分析錯誤、處理的文件不存在、網(wǎng)絡(luò)傳輸錯誤等。如果這些錯誤得不到正確的處理將會導(dǎo)致數(shù)據(jù)挖掘系統(tǒng)崩潰并終止運行,合理地使用異常處理結(jié)構(gòu)可以使得系統(tǒng)更加健壯,具有更高的容錯性。由于異常情況總是不可避免,因此要求數(shù)據(jù)挖掘系統(tǒng)除了具備基本功能之外,還應(yīng)具備預(yù)見并處理可能發(fā)生各種異常的功能,使軟件具有較強的容錯能力。
3.2 Python中常見標(biāo)準(zhǔn)異常處理
PYthon系統(tǒng)定義了一系列可能發(fā)生的異常類型,這些預(yù)定義的異常類型稱為標(biāo)準(zhǔn)異常,當(dāng)程序運行過程中發(fā)生標(biāo)準(zhǔn)異常時系統(tǒng)會顯示相應(yīng)的提示信息。常見的標(biāo)準(zhǔn)異常如表1所示。
3.3 異常捕捉與處理
Python提供多種異常處理機制的基本原理是:首先嘗試運行代碼,如果沒有問題就正常執(zhí)行,如果發(fā)生錯誤就采用容錯機制嘗試去捕捉和處理。
3.3.1使用try...except語句
這是異常處理結(jié)構(gòu)中最基本的結(jié)構(gòu)形式,其中try子句中的代碼塊包含可能會引發(fā)異常的語句,而except子句則用來捕捉相應(yīng)的異常。
例如數(shù)據(jù)采集代碼
Numl=eval(input(”input first number”))
Num2=eval(input(”input second number”))
當(dāng)采集的數(shù)據(jù)為非數(shù)值類型,程序面臨崩潰。
可改進為以下代碼來實現(xiàn)代碼容錯
Try:
Numl=eval(input(”input first number”))
Num2=eval(input(”input second number”))
Except:
Print(”輸入非數(shù)字,請重新輸入!”)
3.3.2使用try...except...else語句
如果try中的代碼出現(xiàn)異常并且被except語句捕捉則執(zhí)行相應(yīng)的異常處理代碼,如果try中的代沒有引導(dǎo)異常,則執(zhí)行else塊的代碼。
例如數(shù)據(jù)采集代碼
While True:
x=input(”input first number”)
Try:
x=int(x)
Except Exception as e:
Print(”error”1
Else:
Print(”You must input{0)”.format(x》
Break
3.3.3 使用try...excepL..finally語句
無論try中的代碼是否發(fā)生異常,finallv子句中的代碼總會得到執(zhí)行。
例如下面代碼,如果try子句的異常沒有被except語句捕捉和處理,或者except子句或else子句中的代碼出現(xiàn)異常,無論是否發(fā)生異常,finally子句中的代碼總能被執(zhí)行。
Def div(a,b):
Try:
Print(a/b)
Except ZeroDivisionError:
Print(”The second argument canno be 0”)
finally:
Print(”一1”1
4 Python數(shù)據(jù)分析中代碼容錯設(shè)計與實現(xiàn)
4.1 詞頻統(tǒng)計
在對網(wǎng)絡(luò)信息進行自動檢索和歸檔時,很多時候需要對給定的已采集的大量原始數(shù)據(jù),統(tǒng)計其中多次出現(xiàn)的關(guān)鍵字,進行概要分析原始數(shù)據(jù),或依關(guān)鍵字進行搜索,這種對關(guān)鍵字進行統(tǒng)計的方法叫詞頻分析。
4.2 jieba庫的使用
jieba庫是一款優(yōu)秀的Pyhon第三方中文分詞庫,主要提供分詞功能,可以輔助自定義分詞詞典。jieba庫支持精確模式、全模式和搜索引擎模式三種分詞模式。精確模式將語句最精確的切分,不存在冗余數(shù)據(jù),適合做文本分析。全模式將語句中所有可能是詞的詞語都切分出來,速度快,但是存在冗余數(shù)據(jù)。搜索引擎模式在精確模式的基礎(chǔ)上,對長詞再次進行切分。
jieba是一個第三方庫,需要在本地機電腦上進行安裝。在聯(lián)網(wǎng)狀態(tài)下,在命令提示符下輸入pip install jieba進行安裝,安裝完成后會提示安裝成功。
4.3 算法實現(xiàn)
本算法以英文《Hamlet》(《哈姆雷特》)為例,統(tǒng)計其英文詞頻,算法分三個步驟:第一步,分解并提取英文文章的單詞;第二步,對每個單詞進行計數(shù);第三步,對單詞的統(tǒng)計值從高到低進行排序,輸出前20個高頻詞語。在算法分析過程中,引入代碼容錯機制來避免因數(shù)據(jù)采集錯誤導(dǎo)致系統(tǒng)崩潰。
def get_text0:
txt= open(”hamlet.txt”,”r”,encoding= 'UTF_8,).read0
try:
txt= txt.lower()
for ch in…#$%&0++,一./=;<=>?@【\\]^-‘m~':
txt= txt.replace(ch,””)
return txt
except IOError:
print(”Error:沒有找到文件或讀取文件失敗”)
else:
print(”內(nèi)容讀取成功”)
txt.close()
file_txt= get_text0
words= file_txt.split0
counts={)
for word in words:
if len(word)==1:
conbnue
else:
counts[word]= counts.get(word,0)+l
items= list(counts.items0)
items.sort(key=lambda x: x[ll, reverse=True)
fori in range(5):
word,count= items[i]
print(”{0:<5卜>(1:>5".format(word,count)
4. 4算法測試
經(jīng)測試算法運行良好,無異常,算法健壯性和可靠性大大提高。
5 結(jié)束語
大數(shù)據(jù)時代的到來,為各行各業(yè)帶來了機遇與挑戰(zhàn)。人們在從海量數(shù)據(jù)中挖掘自己有用信息的同時,數(shù)據(jù)的安全性和可靠性也逐漸成為社會關(guān)注的重點內(nèi)容,計算機系統(tǒng)的可靠性研究對提高整個系統(tǒng)運行起到關(guān)鍵作用。本文通過圍繞大數(shù)據(jù)技術(shù)、數(shù)據(jù)挖掘技術(shù)、容錯技術(shù)和Python技術(shù)多方面展開討論,結(jié)合算法代碼詳細分析了具體容錯方法,通過算法優(yōu)化分析,最終實現(xiàn)大大提高了計算機可靠性,從而保障計算機系統(tǒng)運行過程的安全性,以期為進一步研究計算機容錯提供參考借鑒。
參考文獻:
[1]李鑫,孫蓉,劉景偉.分布式存儲系統(tǒng)中容錯技術(shù)綜述[Jl.無線電通信技術(shù),2019,45(5): 463-475.
[2]吳慶民.大數(shù)據(jù)環(huán)境下數(shù)據(jù)容錯技術(shù)研究與實現(xiàn)[D].北京:中國科學(xué)院大學(xué),2016.
[3]楊娜,劉靖.面向云應(yīng)用系統(tǒng)的容錯即服務(wù)優(yōu)化提供方法[Jl.軟件學(xué)報,2019,30(4): 1191-1202.
[4]吳必造.基于Linux的智能家居控制終端系統(tǒng)的設(shè)計與實現(xiàn)[Dl.成都:電子科技大學(xué),2013.
[5]孫黎,蘇宇,張弛,等,分布式存儲系統(tǒng)中的糾刪碼容錯方法研究[J].計算機工程,2019,45(11): 74-80.
[6]劉新宇,李浪,肖斌斌.基于屬性代理重加密技術(shù)與可容錯機制相結(jié)合的數(shù)據(jù)檢索方案[Jl.計算機科學(xué),2018,45(7):162-166, 196.
[7]張志敏,吳軍,嚴(yán)明玉.面向網(wǎng)絡(luò)的快速容錯恢復(fù)技術(shù)[Jl.計算機工程與設(shè)計,201 8,39(9): 2701-2706.
[8]謝建洲.計算機系統(tǒng)容錯技術(shù)研究[Jl.電腦知識與技術(shù),2016.12(6): 250-252.
[9]雷利香.計算機系統(tǒng)容錯技術(shù)分析及研究[Jl.電子世界,2019(13): 177-178.
[10]陸陽,王強,張本宏,等.計算機系統(tǒng)容錯技術(shù)研究[J].計算機工程,2010,36(13): 230-235.
【通聯(lián)編輯:謝媛媛】