python生成hbase測試資料說明

2021-09-24 09:35:35 字數 4624 閱讀 8691

版本:

python:3.6.4 與 2.7.3 均適配

name:

age:

***:

edu:

telphone:

email:

country:

以下為 python 生成 hbase 測試資料的全部**,generatedata.py 檔案內容如下:

# -- coding: utf-8 --

###########################################

# rowkey:隨機的兩位數 + 當前時間戳,並要確保該rowkey在表資料中唯一。

# 列定義:name、age、***、edu、tel、email、country。

# 0001,tom,17,man,,176******xx,,china

# 0002,mary,23,woman,college,,[email protected],japan

# 0003,sam,18,man,middle,132******xx,,america

# 0004,sariel,26,,college,178******xx,[email protected],china

###########################################

import random

import string

import sys

# 大小寫字母

alphabet_upper_list = string.ascii_uppercase

alphabet_lower_list = string.ascii_lowercase

# 隨機生成指定位數的字串

defget_random

(instr, length)

:# 從指定序列中隨機獲取指定長度的片段並組成陣列,例如:['a', 't', 'f', 'v', 'y']

res = random.sample(instr, length)

# 將陣列內的元素組成字串

result =

''.join(res)

return result

# 建立名字

defget_random_name

(length)

: name = string.capwords(get_random(alphabet_lower_list, length)

)return name

# 獲取年齡

defget_random_age()

:return

str(random.randint(18,

60))# 獲取性別

defget_random_***()

:return random.choice(

["woman"

,"man"])

# 獲取學歷

defget_random_edu()

: edu_list =

["primary"

,"middle"

,"college"

,"master"

,"court academician"

]return random.choice(edu_list)

# 獲取**號碼

defget_random_tel()

: pre_list =

["130"

,"131"

,"132"

,"133"

,"134"

,"135"

,"136"

,"137"

,"138"

,"139"

,"147"

,"150"

,"151"

,"152"

,"153"

,"155"

,"156"

,"157"

,"158"

,"159"

,"186"

,"187"

,"188"

]return random.choice(pre_list)+''

.join(random.sample(

'0123456789',8

))# 獲取郵箱名

defget_random_email

(length)

: alphabet_list = alphabet_lower_list + alphabet_upper_list

email_list =

["163.com"

,"126.com"

,"qq.com"

,"gmail.com"

]return get_random(alphabet_list, length)

+"@"

+ random.choice(email_list)

# 獲取國籍

defget_random_country()

: country_list =

["afghanistan"

,"anguilla"

,"australie"

,"barbados"

,"china"

,"brisil"

,"colombie"

,"france"

,"irlande"

,"russie"

,"suisse"

,"america"

,"zaire"

,"vanuatu"

,"turquie"

,"togo"

,"suisse"

,"sri lanka"

,"porto rico"

,"pirou"

]return random.choice(country_list)

# 放置生成的並且不存在的rowkey

rowkey_tmp_list =

# 製作rowkey

defget_random_rowkey()

:import time

pre_rowkey =

""while

true

:# 獲取00~99的兩位數字,包含00與99

num = random.randint(00,

99)# 獲取當前10位的時間戳

timestamp =

int(time.time())

# str(num).zfill(2)為字串不滿足2位,自動將該字串補0

pre_rowkey =

str(num)

.zfill(2)

+str

(timestamp)

if pre_rowkey not

in rowkey_tmp_list:

break

return pre_rowkey

# 生成一條資料

defget_random_record()

:return get_random_rowkey()+

","+ get_random_name(5)

+","

+ get_random_age()+

","+ get_random_***()+

","+ get_random_edu()+

","+ get_random_tel()+

","+ get_random_email(10)

+","

+ get_random_country(

)# 將記錄寫到文字中

defwrite_record_to_file()

:# 覆蓋檔案內容,重新寫入

f =open

(sys.ar**[1]

,'w'

) i =

0while i <

int(sys.ar**[2]

):record = get_random_record(

) f.write(record)

# 換行寫入

f.write(

'\n'

) i +=

1print

("完成條資料儲存"

.format

(i))

f.close(

)if __name__ ==

"__main__"

: write_record_to_file(

)

輸出 100000 條資料到 /tmp/hbase_data.txt 檔案中,執行以下命令:

python generatedata.py /tmp/hbase_data.txt 100000
引數解釋:

為避免資料過大導致熱點和資料傾斜問題,預先設定 hbase 表為10個 region,對應表的建立命令為:

create 'default:people', , , splits=

>

['10|','20|','30|','40|','50|','60|','70|','80|','90|'

]

接下來我們可以利用這份測試資料對 hbase 相關功能進行測試與練習。

HBASE效能測試

之前測試過hbase的引數對效能影響,今天的測試主要針對寫吞吐量,通過對比不同客戶端的數量,以及插入量,來看看hbase寫的情況下,大概有多少每秒插入。測試硬體 8vcore,32g記憶體 8臺機器,5個nodemanager region server 大家可能知道每個map,reduce 預設1...

Hbase基準測試

1.hbase讀寫測試 1.1hbase順序寫 測試原理 hbase自帶org.apache.hadoop.hbase.performanceevaluation nomapred工具測試環境 3臺伺服器 hadoop集群模式 hadoop版本2.7.2 hbase1.3.1 hadoop命令配置環...

python生成測試報告

import unittest import os import time import htmltestrunner 用例路徑 case path os.path.join os.getcwd 報告存放路徑 report path os.path.join os.getcwd report pri...