作者:水皱皱_446 | 来源:互联网 | 2023-08-27 18:14
Docker化
虽然官网https://github.com/gangly/datafaker 说支持python 2及3,但我在使用3.4遇到依赖安装失败,最后使用python 2.7成功支持了mysql及hive,Dockerfile文件如下
FROM python:2.7
WORKDIR /faker_home
RUN python -m pip install --upgrade pip
RUN apt-get update && apt-get install -y libsasl2-dev libsasl2-modules
RUN pip install datafaker pyhive mysqlclient kafka-python thrift sasl thrift_sasl
运行示意
docker run -it --rm --net=host -v `pwd`/faker_home:/faker_home faker:python2.7 bashdatafaker hive hive://root@XXX.XX.XX.XX:10000/default test_text 100 --meta meta.txt --batch 100
使用记录
- 中文文档更准确一些
- 数据类型,如IPV4等都是全小写
- 可以使用op 进行关联,如增加前缀
- 日期格式内可以增加固定timezone,毫秒等
- 日期格式要记得加’(单引号),否则输出也没有单引号
- hive timestamp直接导入必须到timezone,原因不明(输出的sql 可以在hive执行成功)
- 注意batch,batch过大可能导致buffer不足、效率下降,因此在hive模式下可能需要自行merge以降低小文件数量
hive timestamp测试记录如下,表定义:
hive> show create table test_text;
OK
CREATE TABLE `test_text`(`advertiser_id` string, `ad_plan_id` string, `gen_time` timestamp, `cnt` bigint)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ( 'field.delim'=',', 'line.delim'='\n', 'serialization.format'=',')
STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION'hdfs://namenode:9000/user/hive/warehouse/test_text'
TBLPROPERTIES ('bucketing_version'='2', 'transient_lastDdlTime'='1642147458')
Time taken: 0.318 seconds, Fetched: 20 row(s)
可以通过的meta
advertiser_id||string||advertiser_id[:ipv4]
ad_plan_id||string||ad_plan_id[:color_name]
gen_time||timestamp||gen_time[:datetime(1,'%Y-%m-%d %R:%S.073 UTC')]
cnt||int||cnt[:int(1, 10000)]
失败的meta格式
advertiser_id||string||advertiser_id[:ipv4]
ad_plan_id||string||ad_plan_id[:color_name]
gen_time||timestamp||gen_time[:datetime(1,'%Y-%m-%d %R:%S.073 ')]
cnt||int||cnt[:int(1, 10000)]