若需要构造大批量数据,原生python将耗费大量时间,请使用pypy执行datafaker。例如:
pypy -m datafaker hbase localhost:9090 PIGONE 50000 --meta hbase.txt
或者多线程执行, 8个线程产生数据,每次批量写入pg 2000条数据:
datafaker mysql postgresql+psycopg2://postgres:postgres@localhost/testpg pig_fnumbe_test 100000 --meta meta.txt --worker 8 --batch 2000
是由于hbase设置的hbase.thrift.server.socket.read.timeout参数过小,默认为60秒 因此在conf/hbase-site.xml中添加上配置即可:
<property>
<name>hbase.thrift.server.socket.read.timeout</name>
<value>600000</value>
<description>eg:milisecond</description>
</property>
重启hbase, 重启thrift
例子中大部分是以mysql为例子展示的。
只要支持sqlachemy的关系型数据库都是可以的,例如pg, oracle, tidb,redshift等等。
但type类型都是rdb,例如:
datafaker rdb postgresql+psycopg2://postgres:postgres@localhost/testpg pig_fnumbe_test 100000 --meta meta.txt --worker 8 --batch 2000
写入oracle
datafaker rdb oracle://root:[email protected]:1521/helowin stu 10 --meta meta.txt
sqlalchemy连接串必须为oracle:形式
操作系统 | python版本 | 测试情况 | 备注 |
---|---|---|---|
Mac osx | python2.7/3.5+ | 通过 | |
Linux | python2.7 | 通过 | |
Windows10 | python3.6 | 通过 |
需要设置interval和batch参数,例如:
datafaker rdb postgresql+psycopg2://postgres:postgres@localhost/testpg pig_fnumbe_test 100000 --meta meta.txt --interval 0.5 --batch 1
如果需要写入其他数据库请给我提issue