㈠ [hive]一種基於Hive日誌分析的大數據存儲優化方法_王正也_百度文庫
一種基於Hive日誌分析的大數據存儲優化方法 王正也 網路文庫
http://wenku..com/link?url=-
2 一種基於Hive日誌的大數據存儲優化方法
2.1 優化方法概述
Hive作為Hadoop開源分布式平台下的數據倉庫工具,他的作用是HDFS上存儲的結構化數據,根據使用者的需求將其映射出數據表,並可以向用戶提供類似SQL的HiveQL查詢功能,並將用戶提交的Query轉換成Map-Rece任務執行。Hive的優點是提供類SQL的查詢介面,快速實現數據的統計分析功能,而不必編寫專用的Map-Rece任務。而也正是因為如此,通用的Hive數據倉庫,沒有進行專用化的優化設計,其查詢分析效率也有很大的優化空間[4]。
文章根據常用的HiveQL的查詢日誌分析和根據現有的數據存儲結構的關聯特性提出一種通用的Hive數據存儲的優化方法。
本策略認為優化一個專用的Hive海量數據倉庫分為以下幾個步驟: 1. 分析常用查詢日誌,根據使用人員習慣定製數據分區結構。 2. 使用專用的優化過的列式存儲結構作為數據導入格式。 3. 根據數據表,和表中欄位的實際物理意義合並壓縮重復欄位和數據表。 4. 根據數據表中欄位實際的取值優化欄位的存儲類型。 5. 編寫UDF,在不改變用戶使用習慣的基礎上,應用上述優化。 其中1.2.兩點在數據導入階段進行優化,3.4.5.是在對數據表欄位和表結構的優化,需要配合UDF來進行。通過上述優化過程可以大大節省HiveQL的查詢時間以及HDFS上數據的佔用空間。
2.2 根據查詢日誌進行分區優化
Hive的日誌記錄了Hive的運行狀況,為本文分析操作者的使用習慣提供了很大的幫助。可以通過編寫Hive的EXPAIN功能進行日誌的分析,利用Hive的EXPLAIN功能,本文可以得到查詢語句的抽象語法樹(ABSTRACT SYNTAX TREE),通過抽象語法樹,本文可以快速得到查詢語句的語法結構。
例如,以下一條語句SELECT col1, SUM(col2) FROM tab1 GROUP BY col1的通過EXPLAIN命令本文可以得到如下結果:
ABSTRACT SYNTAX TREE:
(TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME tab1))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL col1)) (TOK_SELEXPR (TOK_FUNCTION sum (TOK_TABLE_OR_COL col2)))) (TOK_GROUPBY (TOK_TABLE_OR_COL col1))))
可以通過使用正則表達式抓取特徵數據,得到該語句的語法結構,同時通過編寫Shell腳本,批量執行EXPLAIN命令,可以很快的理解到使用者的常用語法習慣,為後文的分區優化提供了數據支持。 通過對使用者常用欄位進行分區(partition),帶來的便利是大大的節省了一些常用查詢的在硬碟中讀取數據所消耗的時間。 通常在沒有進行過優化的Hive系統中,每次查詢提交之後,Hive要對輸入數據進行全盤掃描滿足條件的的項目,通過合理的劃分分區,在單次任務提交後,可以按照任務的限定條件只掃描某些關鍵分區的數據,大大提高的Hive查詢執行的效率。
2.3 選取合適的Hive數據存儲格式
在Hive中數據表創建時需要指定文件存儲格式,在Hive0.90版本中,常用的數據格式分為TEXTFILE、SEQUNCEFILE、RCFILE和用戶自定格式等幾種,以上格式的主要區別在行式存儲與列式存儲,不同壓縮演算法等方面的區別。根據Hive數據表格的特性,和通過Hive日誌觀察到的用戶使用習慣等特性,通過選擇合適的文件存儲格式,可以大大提高查詢效率,減少查詢耗費時間。
4 結論
本文給出了一種基於Hive日誌分析的大數據存儲優化方法,通過實際測試可以看出,使用該優化方法的Hive數據存儲系統無論從磁碟空間利用率還是從查詢效率上都得到和很大提升。
㈡ Python和大數據告訴你,想要吃雞您應該選擇哪種PUBG武器組合
使用Python,我找到了可以幫助您贏得夢寐以求的吃雞的最佳武器組合。
不久前,出於好奇,我下載了PUBG Mobile,以了解炒作的全部內容。為了大致了解 游戲 的運作方式:您從飛機上跳傘,然後撞上建築物並開始尋找防護裝備,彈葯和武器,然後要麼殺死他人,要麼被他人殺死,最後一支生存下來的隊伍贏得雞肉晚餐。這個概念聽起來很簡單,是嗎?然後,您撞上一棟建築物,發現自己盯著五把不同的槍,槍口上的名字不知道它們之間的區別。每個玩家都可以裝備兩把槍,但是我應該怎麼知道該選哪兩把呢?我可能沒有選擇合適的對手,因為即使我多次開始射擊,我也一直被對手殺死。因此,我決定,為什麼不趁此機會提高我的Python技能(您知道當您實際上必須使用Google的"快捷鍵才能在Python上運行代碼"時,您真的很生銹),並希望找到可以使我更好的東西。有機會帶回家那頓雞肉晚餐?請迅速做出決定:自從我上一次使用Python開發項目以來已經過去了兩年,所以絕對歡迎提出有關如何以更好的方式編寫代碼的建議!和往常一樣,我的代碼託管在GitHub上。
我到處搜索關於PUBG武器統計數據的現成數據集,但最終沒有找到(Kaggle有一個從官方API派生的關於玩家統計數據的數據集,該數據集可作為其他分析的有趣數據集)。 但是,我確實找到了提供武器統計信息的網站,因此我繼續使用BeautifulSoup對官方的PUBG Wiki進行了一些網頁抓取。 我將不涉及網路抓取過程的詳細信息,因為我想將重點更多地放在數據分析部分上,因此我僅重點介紹一些部分。
盡管有一個頁面提供所有武器的統計信息,但我希望能夠將它們歸類為各自的類型(例如,無論是突擊步槍還是輕機槍),因此我最終從每個頁面的相應頁面抓取 將8個數據框合並為一個數據框之前的武器類型。
我還通過將其他網站的數據替換為丟失和怪異的數據(請參閱本文結尾處的數據)來清理丟失的數據,這些數據列出了在當前數據集中不需要替換的其他武器的可比較值。
之後,在將數據幀導出為csv文件之前,我將所有數字列都轉換為float數據類型,以允許在後續數據分析中進行算術運算。
以下總結了每個功能的含義(只需最少的更改即可從PUBG Wiki復制和粘貼信息)
· DMG(命中傷害)
在裝甲和其他減災因素之前施加直接傷害
· SPD(初始子彈速度)
子彈離開槍口的速度,以每秒米為單位。 較高的數字意味著對遙遠的移動目標所需的鉛減少。
· PWR(身體碰撞沖擊力)
射擊布娃娃時會施加多大的力。 更高的價值意味著更大的推動力。
· MAG(每個Mag的彈葯)
彈匣中可以容納的最大彈葯量。
· TBS(射擊間隔)
重新發射武器之前必須經過的最短時間(以秒為單位)。
· 模式(射擊模式)
該武器可以選擇的模式。 在此欄位中具有"單發","自動"的武器表示可以在單發射擊模式或自動射擊模式之間進行選擇。
· BSHT(連拍)
如果適用,一次連發射擊幾張。
· BDEL(連拍延遲)
再次觸發另一個突發之前必須經過的最短時間(以秒為單位)。
· AMM(彈葯類型)
武器接受的彈葯類型。
· CAP(容量)
也稱為散裝或佔用的庫存空間量。
· 附件(附件)
武器本身可以附帶什麼。 附件的示例包括一個范圍,可以進行遠距離狙擊。
· BDMG 0,BDMG 1,BDMG 2,BDMG 3(身體傷害等級0,身體傷害等級1,身體傷害等級2,身體傷害等級3)
在以下情況下對身體造成的傷害:分別沒有裝備盔甲,沒有裝備1級背心,裝備2級背心和3級背心。
· HDMG 0,HDMG 1,HDMG 2,HDMG 3(頭部傷害等級0,頭部傷害等級1,頭部傷害等級2,頭部傷害等級3)
在以下情況下對頭部造成的傷害:未裝備護甲,裝備了1級護甲,裝備了2級護甲和裝備了3級護甲。
· 類型
我創建的一個變數,用於反映其所屬的武器類型。
根據描述,似乎更重要的武器特徵是:身體和頭部的傷害(如果武器造成更大的傷害,則更有可能殺死對手),初始子彈速度(更快的子彈速度意味著 您的子彈可能會在對手擊中您之前擊中對手),兩次射擊之間的時間(通常需要多次射擊才能殺死對手,因此兩次射擊之間的時間越短,您擊敗對手的機會就越大),每磁石彈葯(如果您 可以為每個彈匣攜帶更多子彈,而您不必浪費那麼多時間重新裝彈)。
現在已經消除了所有棘手的細節,是時候玩得開心了。 讓我們嘗試通過繪制相關矩陣來找到不同功能之間的一些趨勢。
快速瀏覽一下相關矩陣,可以發現不同級別的身體傷害之間的關聯性非常好,不同級別的頭部傷害也是如此。 因此,我們可以選擇其中一個級別,讓我們只使用BDMG 1和HDMG1。身體傷害和頭部傷害也高度相關,這絕對不足為奇,但是現在,我們將繼續 為了安全起見,我們相關矩陣中的兩個變數都是安全的。 令人驚訝的是,傷害與身體和頭部傷害之間的相關性較低。 由於身體和頭部的傷害是直接影響玩家 健康 的因素,因此我們只從相關矩陣中刪除傷害。
觀察"雜亂無章"的相關矩陣,似乎在傷害與射擊之間的時間(較高的傷害槍在射擊之間的時間較長),傷害和速度(較高的傷害槍的子彈速度較慢)之間進行權衡。 每個彈葯的彈葯(更高傷害的槍支,每個彈匣可以攜帶更少的彈葯)。 在這三個折衷方案中,前兩個折衷方案對於贏得一場戰斗更為關鍵,因此我們將重點放在它們上。 另外,鑒於身體傷害和頭部傷害之間存在高度相關性,因此,我將僅從此刻開始著眼於頭部傷害,以進一步簡化事情。 簡而言之,我們將研究3個變數:頭部傷害等級1(HDMG 1),初始子彈速度(SPD)和射擊間隔時間(TBS)。
首先,按武器類型繪制熱圖。 在顯示實際熱圖之前,我將快速總結不同武器類型的縮寫。
· 突擊:突擊步槍
· 弓:bo
· DMR:指定的神射手步槍
· LMG:輕機槍
· SG:Shot彈槍
· SMG:沖鋒槍
· SR:狙擊步槍
這進一步重申了我們早先發現的趨勢-更高傷害的槍支往往具有較慢的子彈速度,並且兩次發射之間的時間更長(我們僅以shot彈槍為例)。 正如本文開頭所提到的,每個玩家都可以裝備2支槍,因此,我想根據這2種折衷情況,找出哪種搭配最有利。
我首先繪制了一個熱圖,以比較不同的武器組合。 這似乎描繪了一幅相似的圖,其中在傷害與速度之間以及在傷害與射擊之間的時間之間進行權衡,但這並不是很清楚,因此相關矩陣也許可以更好地描述事物。
如我們所見,最大的折衷是在傷害和射擊之間的時間之間,然後是傷害和速度。
當涉及權衡時,最好的組合是帕累托高效的組合。 帕累托高效到底是什麼? 簡而言之,如果您有兩個目標,那麼帕累托有效組合就是這樣一種組合,您無法在一個目標上取得進步而又不使另一個目標惡化。 假設您有兩個目標X和Y,這兩個目標之間需要權衡。
點A的效率不高,因為存在一個點(例如A'),您在至少一個目標中的表現要好於其他目標。 點A'和A'都是帕累托有效的,因為不可能在不使另一個目標惡化的情況下為一個目標獲得更高的價值。 例如,從點A'到點A',我們得到一個更高的X但一個更低的Y。一個Pareto前沿僅連接所有Pareto有效點。
在我們的案例中,我們要權衡兩個因素,因此讓我們分別來看一下。 我們將從傷害與射擊間隔之間的更大權衡開始。
如上所示,帕累托有效組合為:
· 和沖鋒槍
· 和輕機槍
· 和指定的神射手步槍
· 彈槍和沖鋒槍
· 和Shot彈槍
我們不能說這些組合中的一種優於另一種,但是如果我想要一種組合在傷害和兩次射擊之間的時間上表現均等,那麼選擇2或3組合可能是個好主意。
損害與速度之間的權衡又如何呢?
在這種情況下,帕累托有效組合為:
· 突擊步槍和輕機槍
· 突擊步槍和狙擊步槍
· 輕機槍和狙擊步槍
· 指定的神射手步槍和狙擊步槍
· 突擊步槍和Shot彈槍
· 輕機槍和Shot彈槍
· 彈槍和狙擊步槍
· 和Shot彈槍
再說一次,我們不能斷定這些組合中的一種優於另一種,但是如果我想要一個組合在傷害和速度上都表現得相當不錯的組合,那麼最好選擇5或6的組合。
歸根結底,這實際上取決於您是要優先考慮傷害與射擊間隔時間之間的權衡,還是損害與初始子彈速度之間的權衡。 然後,帕累托效率分析將提供一些武器組合,您可以選擇,這取決於您是喜歡一種目標比另一目標好得多的組合,還是兩種目標都相當平等的組合。 我會選擇後者,因為進行此分析的目的是要找到一對具有不同優勢的槍支,彼此互補。
話雖如此,我希望這種分析能幫助您贏得那頓雞肉大餐!
數據集的功勞
· https://pubg.gamepedia.com
· https://www.futuregamereleases.com/2019/01/pubg-weapon-damage-charts-body-vs-headshot-limb-utility/
· https://pubgmap.io/weapons.html
提供網路抓取參考代碼的信用
· Hackwagon學院
歸功於帕累托邊境代碼
· https://pythonhealthcare.org/tag/pareto-front/
(本文翻譯自Meredith Wan的文章《Which PUBG Weapon Combination Should You Pick?》,參考:https://towardsdatascience.com/which-pubg-weapon-combination-should-you-pick-f58bdc262082)
㈢ 什麼叫尿比重偏低
尿潛血定性b l d
㈣ 深信服SG有什麼用呢
1. 上網代理(和ISA、BLUECOAT一樣,IE瀏覽器裡面填代理地址上網)
2. 高級版本的AC,AC升級版(換個名目,便於價格操作,多了上網加速功能)
3. 互聯網訪問速度優化(具備網頁、視頻的緩沖)
4. 上網行為管理(什麼能上、什麼不能上,包括網頁、應用、IP地址、埠等進行控制)
5. 網路審計(流量的審計:流量由哪些應用組成、這段時間流量趨勢走向等、行為的審計:什麼人在什麼時間在干什麼;報表:TOPN、餅狀圖、樹狀圖、趨勢圖)
6. 互聯網流控(限制某應用/人員/IP 流量最高不超過1M;保障某人員/應用/IP流量通道最小1M,而且用不完1M時可以留著不給其他人用,或者分給其他人用)