如果你在从事大数据BI的工作,想对比一下MySQL、GreenPlum、Elasticsearch、Hive、Presto、Impala、Drill、HAWQ、Druid、Pinot、Kylin、ClickHouse等不同实现方案之间的表现,那你就需要一份标准的数据进行测试,这个开源项目就是为了生成这样的标准数据。
数据模型: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秒。
在我们编写Flink程序的时候,常常需要测试自己程序的正确性以及给Kafka中造一些测试数据,那我们如何用Flink实现制作模拟数据呢? Flink从1.11开始提供了一个内置的DataGen 连接器,主要是用于生成一些随机数,用于在没有数据源的时候,进行流任务的测试以及性能测试等。 导入Flink的maven依赖,注意idea执行的时候需要在idea中配置provided也可执行才行 <depe
表单设计器中开发自定义组件流程 src\components\generator\config.js 中添加一个json src\compontnes\目录下创建对应的组件 main.js中全局注册刚创建的组件 src\views\index\RightPanel.vue 中绑定第一步中json中添加的各个属性值 详细步骤 步骤一: src\components\generator\config.
官方用例 所需MAVEN依赖 <dependencies> <!--MyBatis-Plus代码生成器需要的依赖,开始--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-generator</artifactId> <version>3.5.2</ve
之前使用Windows,在Windows上跑这个项目这个mybatis-generator使用是没有问题的,但是迁移到Mac电脑之后就出问题了。(项目两个电脑上都能正常启动,就只是mybatis-generator插件出了问题) 报错如下: /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home/bin/java "-Dma
mybatis-generator自动生成代码(lombok带注释) 最近接触到的项目都会用到mybatis框架,会涉及到实体和表的映射,mapper以及mapper.xml的生成,mybatis-generator插件可以根据表结构自动生成实体、mapper、mapper.xml,大大简化了开发的工作量,现有的插件有点小缺陷,注释没有获取数据库字段的注释(mysql为例就是字段的comment)
antd-theme-generator 源码解读 antd-theme-generator只是针对于颜色的定制,对于其他属性例如字体大小,边框,边距等样式不提供定制 这里只针对generateTheme方法和其涉及到的方法进行讲解,其他的方法不予以讲解。官方文档有使用这个方法的例子,请参考:https://github.com/mzohaibqc/antd-theme-generator 参数
实际运行的时候这个插件是派不上用途的,但这个插件依然是非常重要的插件之一。因为每一个使用 ELK stack 的运维人员都应该清楚一个道理:数据是支持操作的唯一真理(否则你也用不着 ELK)。所以在上线之前,你一定会需要在自己的实际环境中,测试 Logstash 和 Elasticsearch 的性能状况。这时候,这个用来生成测试数据的插件就有用了! 配置示例 input { genera
generator 也就是生成器的英文拼写,它的主要作用是生成大批量的数据 方法一 (x for x in ['a', 'v']) 其实也就是把上一章迭代方法中的[]换成了(),那么返回的对象就不同了,前者是生成了一个list后者是生成了一个生成器。 其实跟js中的generator是一样的,打印出来这个生成器的内容只需要使用next()方法就OK了 l = ( x for x in ['1','
生成器根据处理后的原始文件建立路由。 概要 hexo.extend.generator.register(name, function(locals){ }); 在函数中会传入一个 locals 参数,等同于 网站变量,请尽量利用此参数取得网站数据,避免直接存取资料库。 更新路由 hexo.extend.generator.register('test', function(locals){
迭代器和生成器这两个概念总是很容易混淆,经过上节的学习我们知道迭代器是一个对象,那么本节首先要记住:生成器是一种能够中途停止,然后从停止的地方继续运行的函数。可以借助 yield 或 return 停止函数运行。 1. 慕课解释 通过 function* 来创建一个生成器函数,在调用一个生成器函数后,并不会立即执行函数中的代码,而是会返回一个迭代器对象,通过调用迭代器对象的 next() 方法,可
我有一个父表,它与一个子表有许多关联。 我试图用CriteriaBuilder编写一个查询,以限制从子表返回的结果。 我添加了一个谓词,类似于 如果父节点有一个子节点或子节点和子节点,则返回父节点,同时也返回所有子节点。 Hibernate使用我的谓词启动了第一个查询,但是第二个获取孩子的查询只使用了where子句中的JoinColumn,而没有包含它 思想? 我正在使用SetJoin 澄清:
我正在尝试执行一些过滤,但ManyToOne的过滤有一些问题,每次我得到结果集时,我都会得到所有Task对象,而不管它们所链接的项目如何。我有以下实体: 和任务类,它通过它的id与项目链接 在任务表中,它看起来像这样 我有jparepository来搜索任务: 以及使用由org . hibernate . jpamodelgen . jpametamodelentityprocessor生成的元模