`

数据生成器

阅读更多

data-generator是一个Java实现的数据生成器开源项目。

 

如果你在从事大数据BI的工作,想对比一下MySQL、GreenPlum、Elasticsearch、Hive、Presto、Impala、Drill、HAWQ、Druid、Pinot、Kylin、ClickHouse等不同实现方案之间的表现,那你就需要一份标准的数据进行测试,这个开源项目就是为了生成这样的标准数据。

 

数据模型:src/main/resources/数据模型.png

 

src/main/resources/数据模型.png

一、编译程序:

 

 mvn assembly:assembly

 

二、在MySQL中创建一个数据库,然后执行 src/main/resources/model_ddl.sql 创建对应的表。

 

三、指定ES的经纬度类型:

 

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/contract/contract/_bulk' -d '
{ "index":{ "_id": 1} }
{"id":1}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/contract/_mapping/contract' -d '
{
  "properties": {
    "geo_location": {
      "type": "geo_point"
    }
  }
}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/detail/detail/_bulk' -d '
{ "index":{ "_id": 1} }
{"id":1}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/detail/_mapping/detail' -d '
{
  "properties": {
    "geo_location": {
      "type": "geo_point"
    }
  }
}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/area/area/_bulk' -d '
{ "index":{ "_id": 1} }
{"id":1}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/area/_mapping/area' -d '
{
  "properties": {
    "geo_location": {
      "type": "geo_point"
    }
  }
}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/customer/customer/_bulk' -d '
{ "index":{ "_id": 1} }
{"id":1}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/customer/_mapping/customer' -d '
{
  "properties": {
    "geo_location": {
      "type": "geo_point"
    }
  }
}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/sales_staff/sales_staff/_bulk' -d '
{ "index":{ "_id": 1} }
{"id":1}
'

curl -H "Content-Type: application/json" -XPUT 'http://192.168.252.193:9200/sales_staff/_mapping/sales_staff' -d '
{
  "properties": {
    "geo_location": {
      "type": "geo_point"
    }
  }
}
'

 

四、在当前目录下的config.txt文件中指定配置:

 

#新增数据是MySQL批量提交记录数量
batchSize=1000
#订单时间开始年份
startYear=2000
#订单时间开始月份
startMonth=1
#订单时间开始天数
startDay=1
#客户数
customerCount=5000
#销售数
salesStaffCount=2000
#合同数
contractCount=20000
#商品数
itemCount=10000
#商品价格上限
priceLimit=1000
#合同最大明细数
contractDetailLimit=100
#合同明细商品最大数量
itemQuantityLimit=100
#将生成的数据保存到哪个MySQL
mysql.url=jdbc:mysql://192.168.252.193:3306/demo?useUnicode=true&characterEncoding=utf8
mysql.user=root
mysql.password=root
mysql.pageSize=10000
#将MySQL里面的数据查出来组装成JSON文档后索引到哪个ES
es.host=192.168.252.193
es.port=9200
#ES批量提交数量
es.batchSize=1000
#可选值为file或者es
#如果选择file,则在当前目录想生成相应的脚本文件,等程序执行完毕后再执行脚本文件将数据索引到ES
#如果选择es,则在数据生成完毕后直接在程序中把数据提交给ES进行索引
es.mode=es
#是否异步多线程的方式进行ES索引
output.async=true
#如果是异步多线程的方式进行ES索引,则需要几个线程
output.async.thread.count=10
#如果ES索引中断,再次索引的时候从哪一页开始索引,0代表第一页
output.start.page=0

 

五、运行程序:

 

all in one:

 

nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.Start &

 

或者

 

step by step:

 

1. 生成模拟数据并保存到mysql:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.generator.Generator &

2. 将mysql中的数据生成合同文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Contract &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x contract.sh
    nohup ./contract.sh &

3. 将mysql中的数据生成合同明细文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.ContractDetail &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x detail.sh
    nohup ./detail.sh &

4. 将mysql中的数据生成区域文档并提交给ES:

    nohup java -Xmx1g -Xms1g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Area &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x area.sh
    nohup ./area.sh &

5. 将mysql中的数据生成商品文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Item &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x item.sh
    nohup ./item.sh &

6. 将mysql中的数据生成客户文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Customer &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x customer.sh
    nohup ./customer.sh &

7. 将mysql中的数据生成销售文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.SalesStaff &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x sales_staff.sh
    nohup ./sales_staff.sh &

8. 将mysql中的数据生成品牌文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Brand &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x brand.sh
    nohup ./brand.sh &

9. 将mysql中的数据生成分类文档并提交给ES:

    nohup java -Xmx2g -Xms2g -cp data-generator-1.0-jar-with-dependencies.jar org.apdplat.data.generator.mysql2es.Category &
    如果es.mode=es则不需要执行如下两步, 只有es.mode=file才需要执行
    chmod +x category.sh
    nohup ./category.sh &

 

六、在hive中执行 src/main/resources/hive_ddl.sql 创建表。

 

七、执行 src/main/resources/sqoop.txt 中的命令将MySQL中的数据导入Hive。

 

八、在Kylin中导入Hive的表、创建Model和Cube、构建Cube。

 

九、在Kibana中创建索引模式,创建图表。

 

十、对MySQL、Kibana+ES、Kylin进行对比如下统计:

 

SELECT
    item. NAME ,
    sum(contract_detail.price) AS total_price ,
    sum(contract_detail.item_quantity) AS total_quantity
FROM
    contract_detail
LEFT JOIN item ON contract_detail.item_id = item.id
GROUP BY
    item. NAME
ORDER BY
    total_quantity DESC 
    
Kylin耗时0.5秒,MySQL59秒,ES5秒。
1
0
分享到:
评论

相关推荐

    网狐数据生成器.zip

    《网狐数据生成器——深度解析游戏开发中的数据加密与解密技术》 在游戏开发领域,数据安全是至关重要的,尤其是对于网络游戏来说,保护玩家数据、防止非法篡改及作弊行为是开发者面临的首要任务。"网狐数据生成器...

    波形数据生成器

    波形数据生成器是一种专业工具,它主要用于创建和编辑各种波形数据,这些数据可以被进一步用于FPGA(Field Programmable Gate Array)的设计和验证。FPGA是一种集成电路,它的逻辑功能可以根据用户的需求进行编程和...

    正弦波数据生成器(正弦波表).rar

    正弦波数据生成器是一种工具,它用于生成数学上的正弦波形数据,这些数据可以应用于各种领域,如音频处理、信号分析、物理模拟、工程计算等。在电子学、通信工程和数字信号处理中,正弦波是基础且重要的元素,因为它...

    网狐DevTools数据生成器

    网狐DevTools数据生成器 网狐游戏开发工具 XOR MD5 加密解密 机器码生成器

    正弦波数据生成器

    正弦波数据生成器是一种工具,它用于创建模拟正弦波形的数据序列。在许多领域,如信号处理、音频工程、通信系统以及物理实验中,正弦波是基础且重要的研究对象。通过生成精确的正弦波数据,研究人员和工程师能够进行...

    任意波形数据生成器

    在电子设计领域,任意波形数据生成器是一种重要的工具,它能够帮助工程师模拟各种复杂的信号,以便进行系统测试和验证。本文将详细探讨"任意波形数据生成器"这一主题,包括其工作原理、功能特性以及如何使用MIF...

    SQL数据生成器

    SQL数据生成器是一种工具,主要用于在数据库环境中快速创建和填充大量的测试或示例数据。它对于软件开发、性能测试、数据库设计验证等场景非常有用。通过使用这种工具,用户可以自定义数据规则,生成符合特定业务...

    一款了不起的数据生成器

    数据生成器是一款强大的工具,它集成了多种功能,如XOR加密解密、UTF编码解码、版本编码解码、质数生成以及机器标识获取。这些功能在IT领域有着广泛的应用,尤其对于软件开发、数据安全和系统测试等方面至关重要。 ...

    正弦波数据生成器,正弦波数据生成器

    正弦波数据生成器是一种工具,它用于在数字或模拟环境中创建正弦波形的数据集。正弦波是数学中最基本的周期性波形之一,广泛应用于物理学、工程学、信号处理以及音频和通信系统中。理解这个工具的运作原理和应用场景...

    随机数据生成器

    随机数据生成器 随机数据生成器 随机数据生成器

    ibm数据生成器.rar

    IBM数据生成器是一款由IBM公司开发的专业工具,主要用于在数据挖掘和分析过程中生成模拟数据。这个工具的强大之处在于它能够帮助用户快速创建大规模、复杂的数据集,这些数据集可以模仿真实世界的业务场景,从而在...

    数据生成器 数据生成器

    loadrunner 数据生成器(0[1].1 Release).rarloadrunner 数据生成器(0[1].1 Release).rarloadrunner 数据生成器(0[1].1 Release).rar

    DevTools(数据生成器).zip

    DevTools(数据生成器),可以自定义接口数据。非常强大,

    网狐数据生成器

    "网狐数据生成器"是一款专门用于数据生成和加密解密的工具,尤其适用于网络狐(WebFox)平台。在互联网行业中,数据生成是测试、分析以及模拟真实环境的重要手段,而加密解密则涉及到数据的安全性和隐私保护。这款...

    LED段码数据生成器

    LED段码数据生成器是一种专为LED显示屏设计的实用工具,它能够自动生成用于驱动LED显示的特定数据。LED显示屏通常由多个独立的段组成,每个段都可以独立地亮起或熄灭,以显示数字、字母或其他字符。段码是控制这些...

    LED数码管数据生成器

    LED数码管数据生成器是一种专为LED数码管设计的软件工具,它能够帮助用户自动生成控制数码管显示所需的数据。在电子工程和嵌入式系统领域,LED数码管被广泛用于制作各种显示设备,如仪表盘、时钟、计数器等。了解并...

    IP配置器Collocate加网狐数据生成器.zip

    《IP配置器与网狐数据生成器:技术解析与应用》 在信息技术领域,网络配置是基础中的基础,而IP配置器与数据生成器则在其中扮演着至关重要的角色。"IP配置器Collocate加网狐数据生成器.zip"这个压缩包文件,包含了...

Global site tag (gtag.js) - Google Analytics