问下大佬, 要用 java 通过逻辑运算生成一张表格(数据量大概 10 亿), 后面需要对该表格做统计分析, 有没有好的建议
配置: 系统: windows10 内存: 20G cpu: i710 代 硬盘: 5900rpm 写入 10m/s
目前的做法是如下:
目前情况:
由于数据后期需要做很多类似 count, sum 之类的运算 es, map reduce 可能不适合,
能想到的优化方案:
1
ihehe 2022-03-31 10:37:12 +08:00 via iPhone
把这 10 亿数据生成 parquet 格式,丢到本地文件大概 10g 以内, 找个 mmp 工具,单机版的就够用,10g 内存 sql 撸几次就可以了,结果存文件,这不就随便唆嘛
|
2
ihehe 2022-03-31 10:38:48 +08:00 via iPhone
更正:mmp --> mpp
|
3
Itoktsnhc 2022-03-31 10:44:48 +08:00
这个场景 clickhouse 不是挺好
|
4
zer0fire OP @ihehe 原先 mysql 要查询的数据表就有 1 亿多条记录, 如何转成 parquet 格式(mysqsl->Hadoop), 内存 sql, 是让我使用内存数据库吗?
|
5
zer0fire OP @Itoktsnhc clickhouse 这个只有 Linux 系统的版本, windows 系统要使用得用 docker
|
6
ihehe 2022-03-31 10:52:46 +08:00 via iPhone
写个程序把 mysql 数据读出来,生成 parquet 格式,就 1 亿条,上面的方案看错了,看成 10 亿,1 亿 条转成 parquet 大概 1g 大小以内;那就不用那么麻烦,你这单机丢到 duckdb 里去, 然后撸 sql 把
|
8
ihehe 2022-03-31 11:08:14 +08:00 via iPhone
@zer0fire 可以这么理解吧,前提是转好格式,提升几十倍的扫描速度,减少 10 多倍的数据大小,你可以试试单机的 spark/ flink/drill/presto 都可以直接扫文件,不用先导成表
|
9
liprais 2022-03-31 11:13:11 +08:00
生成文件 load 完事
另外为啥你要用 java 生成...随便找个 spark 都快得很好吧 |
10
zer0fire OP @ihehe mysql 支持 memory 引擎, 我把表换成用这个引擎, 是不是也能到达同样的效果(确实可以不考虑事务方面的问题)
|
12
zmal 2022-03-31 11:24:02 +08:00
mysql 的使用不太对吧,并行写入同一张表对写入性能不会有提升,线程开那么多也没啥用啊。可以考虑不用 mysql ,数据放 kafka 。
看起来这个场景用大数据工具解决会简单很多,spark/flink 之类的。 |
14
X0ray 2022-03-31 11:33:58 +08:00
先定位瓶颈呗,看着像是读数据慢?
还有 count sum 这类的聚合运算,为啥 es, map reduce 就不适合了? |
15
ihehe 2022-03-31 11:34:53 +08:00 via iPhone 1
@zer0fire mysql 的 memory 引擎对这 1 亿处理应该没啥问题,如果 10 亿百亿的你就没这么多 memory 给它用了;
上面的那些组件都是 java 的,win 上应该是可以跑的,不用再虚拟一层 linux ;(不过我没有在 win 上用过它们) |
16
BeijingBaby 2022-03-31 11:53:46 +08:00
推荐 clickhouse ,轻松处理。
|
17
clf 2022-03-31 12:10:32 +08:00
drill 可以看看这个。
|
18
encro 2022-03-31 19:51:23 +08:00
你以为 mysql memory table 的 sum,cout 就快了吗?
mysql 就是只能作 oltp 业务,作 olap 还是不行的。 |
19
akira 2022-03-31 23:45:41 +08:00
不管是啥,无脑上 固态 总是对的
|