版本:name:python:3.6.4 與 2.7.3 均適配
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...