每一个成功人士的背后,必定曾经做出过勇敢而又孤独的决定。

放弃不难,但坚持很酷~版本:

Python:3.6.4 与 2.7.3 均适配

一、hbase表介绍表名:people

列族:basic_info、other_info

rowkey:随机的两位数 + 当前时间戳,并要确保该rowkey在表数据中唯一。

列定义:name、age、sex、edu、tel、email、country。

二、实现rowkey:随机的两位数:使用random.randint(00, 99),然后使用 zfill(2) 补位,比如数字“1”补位为”01”。

生成当前时间的13位时间戳:int(time.time())

rowkey为 随机的两位数 与 时间戳 拼凑而成,并确保rowkey唯一。

name:使用 string.capwords() 将字符串首字母大写,其余字母小写。

使用 random.sample() 截取指定位数的任意字符串 作为 name

age:random.randint(18, 60) :18 ~ 60岁

sex:random.choice()

edu:random.choice()

telphone:random.choice() 与 random.sample() 的联合使用

email:random.sample() 与 random.choice() 的联合使用

country:random.choice()

三、代码

以下为 python 生成 hbase 测试数据的全部代码,generatedata.py 文件内容如下:# -- coding: utf-8 --

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

# rowkey:随机的两位数 + 当前时间戳,并要确保该rowkey在表数据中唯一。

# 列定义:name、age、sex、edu、tel、email、country。

# 0001,tom,17,man,,176xxxxxxxx,,China

# 0002,mary,23,woman,college,,cdsvo@163.com,Japan

# 0003,sam,18,man,middle,132xxxxxxxx,,America

# 0004,Sariel,26,,college,178xxxxxxxx,12345@126.com,China

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

import random

import string

import sys

# 大小写字母

alphabet_upper_list = string.ascii_uppercase

alphabet_lower_list = string.ascii_lowercase

# 随机生成指定位数的字符串

def get_random(instr, length):

# 从指定序列中随机获取指定长度的片段并组成数组,例如:['a', 't', 'f', 'v', 'y']

res = random.sample(instr, length)

# 将数组内的元素组成字符串

result = ''.join(res)

return result

# 创建名字

def get_random_name(length):

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

return name

# 获取年龄

def get_random_age():

return str(random.randint(18, 60))

# 获取性别

def get_random_sex():

return random.choice(["woman", "man"])

# 获取学历

def get_random_edu():

edu_list = ["primary", "middle", "college", "master", "court academician"]

return random.choice(edu_list)

# 获取电话号码

def get_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))

# 获取邮箱名

def get_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)

# 获取国籍

def get_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

def get_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:

rowkey_tmp_list.append(pre_rowkey)

break

return pre_rowkey

# 生成一条数据

def get_random_record():

return get_random_rowkey() + "," + get_random_name(

5) + "," + get_random_age() + "," + get_random_sex() + "," + get_random_edu() + "," + get_random_tel() + "," + get_random_email(

10) + "," + get_random_country()

# 将记录写到文本中

def write_record_to_file():

# 覆盖文件内容,重新写入

f = open(sys.argv[1], 'w')

i = 0

while i < int(sys.argv[2]):

record = get_random_record()

f.write(record)

# 换行写入

f.write('\n')

i += 1

print("完成{0}条数据存储".format(i))

f.close()

if __name__ == "__main__":

write_record_to_file()

输出 100000 条数据到 /tmp/hbase_data.txt 文件中,执行以下命令:python generatedata.py /tmp/hbase_data.txt 100000

参数解释:要执行的 python 文件:generatedata.py

文件输出路径:/tmp/hbase_data.txt

100000:要生成数据的总数量

为避免数据过大导致热点和数据倾斜问题,预先设置 HBase 表为 10 个 Region,对应表的创建命令为:create 'default:people', {NAME=>'basic_info'}, {NAME=>'other_info'}, SPLITS=>['10|','20|','30|','40|','50|','60|','70|','80|','90|']

接下来我们可以利用这份测试数据对 HBase 相关功能进行测试与练习,比如数据批量导入测试,下篇文章会说明。

python快速写入hbase_Python生成HBase 10w+ 条数据说明相关推荐

  1. 前端渲染10w条数据

    参考:https://mp.weixin.qq.com/s/a9Cso_nXjLeacilF1rs4zA 前言 如果后端真的返回给前端10万条数据,咱们前端要怎么优雅地展示出来呢?(哈哈假设后端真的能 ...

  2. java插入多条数据_如何使用java代码一次性往数据插入10W条数据

    1. 场景 : 往数据库插入10W条记录 2. 思考方案 : 单纯的我们这里不涉及其他任何操作,我们只是想生成一个10W条记录而已,中间无其他步骤,得到的效果如下图所示, 而我们又不会mysql脚本啊 ...

  3. Mysql 批量插入大量数据的两种方案以及优缺点(分别是 5W 条数据和 10W 条数据)

    Mysql 批量插入(5W 条数据和 10W 条数据) 1.批量插入思路 一般是有两种不同的思路: 1.for 循环批量插入 2.生成一条 SQL 语句,比如 insert into user(id, ...

  4. 前端如何处理后端一次性传来的10w条数据

    因为之前在看到了这样的文章,博主介绍了很多种实现方式,作为一名菜鸟级选手,我选择了其中一种实践了一下,因为在平时的项目中其实只需要熟练掌握一种就可以了(( • ̀ω•́ )✧还有就是我是菜鸟~) 懒加 ...

  5. 后端一次性传了10w条数据,前端该如何处理?—— 面试高频

    前端处理后端传的10w条数据 1. 这道题在考什么? 2.先用 node.js 整个10w条数据 3. 基础代码环境 4. 常规处理方案 5. 优化的第一种方式 -- 前端分页 6. 再次优化 7. ...

  6. 公司新来个同事,MyBatis批量插入10w条数据仅用2秒,拍案叫绝!

    批量插入功能是我们日常工作中比较常见的业务功能之一,今天咱们来一个 MyBatis 批量插入的汇总篇,同时对 3 种实现方法做一个性能测试,以及相应的原理分析. 先来简单说一下 3 种批量插入功能分别 ...

  7. python数据写入csv不换行_你还在重复工作?Python轻松读写核对csv表格上万条数据!...

    工作中要核对很多的数据,所以我想到了要用编程来解决重复性的劳动工作,因为以前要核对数据的时候啊,会用筛选功能,一个个去核对,再后来学了vlookup,稍微高级一点,但是vlookup的时候也会遇到很多 ...

  8. 我们用Python分析了B站4万条数据评论,揭秘本山大叔《念诗之王》大热原因!...

    来源:恋习Python 本文约2000字,建议阅读10分钟. 我们通过Python大法通过获取B站:[春晚鬼畜]赵本山:我就是念诗之王!4万条数据评论,与大家一起看看其背后火起来的原因. 1990年本 ...

  9. 利用python脚本一键为MySQL插入万条数据

    运行环境:Windows 10 技术栈:python3,MySQL8.x 编写目的 MySQL是我们研究开发时最常用的关系型数据库.当需要向MySQL数据库中插入大量数据时,一次一条地插入显然不得劲. ...

最新文章

  1. MySQL数据库字符集和整理
  2. 改善C#程序的建议10:用Parallel简化Task
  3. 组件注册——@ComponentScan自动扫描组件指定扫描规则
  4. 13.7 线程生命周期状态图、线程常用的方法。
  5. NetBeans安装提示neatbeans cannot find java 1.8 or higher
  6. MySQL的配置文件_选项文件_参数文件
  7. 不到三千买iPhone12 网友:抢到算我输
  8. SPSS问卷或量表调查研究需要多少份或要求多大的样本量?【SPSS 062期】
  9. jQuery实现点击显示和隐藏内容
  10. 上传任意文件或者上传漏洞
  11. 计算机网络中什么是令牌,一个动画看懂网络原理之令牌环网的工作原理
  12. 毕向东_Java基础
  13. 一二三代壳和加壳技术分类识别
  14. 云桌面服务器+搭建,搭建自己的云桌面服务器
  15. word图文打印排版
  16. (框架)Deepracer 自动训练 框架的搭建
  17. 移动Web富应用框架RAIS发布
  18. UI设计中按钮如何设计,常见的按钮设计类型
  19. 线性回归的理解与公式推导
  20. 用Python写了一个植物大战僵尸小游戏

热门文章

  1. git bash打印当前文件结构_6 个方便的 Git 脚本
  2. mysql 存储过程 定时_MySQL存储过程和定时任务
  3. 如何比较浮点数相等_『GCTT 出品』Go 语言中的比较操作符
  4. 一文带你学会java的jvm精华知识点
  5. Linux中为wget命令设置代理
  6. 解决两个虚拟机网络适配器都为NAT模式,其中一台无法上网的情况
  7. epoll的总结 LT和ET使用EPOLLONESHOT
  8. 在linux中加用户,Ubuntu使用教程——在Ubuntu中添加用户
  9. 2012年上海市高等学校计算机等级考试试卷,2012年上海市高等学校计算机等级考试A试卷...
  10. shardingjdbc每月分表_shardingjdbc分库分表测试