1
kele1997 2022-11-01 09:22:32 +08:00
spark 临时表
|
2
jeesk 2022-11-01 09:40:17 +08:00
flink 试一试
|
3
sunmacarenas 2022-11-01 09:55:52 +08:00 via Android
SAP HANA 可以尝试一下,不过成本非常高
|
4
linfx7 2022-11-01 09:58:53 +08:00
trino 或者 presto 试一试
|
5
liprais 2022-11-01 10:03:02 +08:00 via iPhone
内存放不下的咋办
|
6
1996wang 2022-11-01 10:03:30 +08:00
1.整个过程不要求实时计算,那么直接原始数据入 mpp 库,整个 dag 在 mpp 里执行.就是数仓那一套.
2.整体要实时计算,可以试试 flink,最后把结果写入 mpp,供后续使用. 至于中间结果,可以就一整套 flink sql(这种中间状态会变大,不可控),或者中间结果打入 redis,flink 实时异步关联 |
7
Exception615 2022-11-01 10:10:16 +08:00
计算的过程交给 MPP 感觉不太合适,大数据量的批处理还是 spark 比较合适,支持的数据源种类也多
|
8
lookStupiToForce 2022-11-01 11:16:25 +08:00
不说数据量?
你内存要够大到几个 T 的地步,那确实一般情况随便上内存数据库做运算只把最后结果落盘啊?但数据量一大起来,几个 T 也不够看的 |
9
w0017 2022-11-01 11:39:08 +08:00
spark-redis 了解下。
|
10
whats OP @lookStupiToForce 对数据量做了限制,超出内存大小的计算直接拒绝,内存一般可以配置到 1TB 以上
|
11
tulumu 2022-11-01 11:58:57 +08:00
如果是简单 etl, 建议实时就 flink sql +udf, 离线就 hive/spark, 想方便就还继续 mpp 数据库吧, 毕竟一把梭
|
12
ConfusedBiscuit 2022-11-01 12:03:06 +08:00
内存数据库的方案我玩过,先说结论,玩好了效果很好
用的是 Hive Transform + Python 脚本 + Python 内置的 SQLite 模块做内存数据库。只要控制好每个节点数据量(比如根据某个 id hash 到不同 reducer ,这样就能承载很大的总数据量),效果就非常好,比我那个项目以前的方案强很多。当时这个方案由于效果太好还在公司内有些反响 |
13
lookStupiToForce 2022-11-01 12:28:05 +08:00
@whats #9
除了 spark 和 flink , 补充一个 Apache Ignite (这个才是和 redis 一类的真内存数据库,支持内存数据表 session 持久化,支持 acid ) https://stackoverflow.com/questions/36036910/apache-spark-vs-apache-ignite 不过所有内存的东西不落盘都不靠谱,即便你能用上持久化内存也一样,所以你得切分清楚哪些东西是进了内存库后往里读 /往外写了一半全丢了也不要紧 |
14
motecshine 2022-11-01 13:11:40 +08:00
ramdisk 可以试试
|
15
fenghao 2022-11-02 06:51:11 +08:00
使用内存数据库肯定是一个好的解决方案,redis 咋样?但我看你的需求在大量计算而非 IO ,不知道具体怎么样,可能 bottleneck 并不在 IO 上。
|