1
cookii 228 天前 via Android
改动量最小的方案,用 mapdb ,把 list 映射到磁盘。
|
2
512357301 228 天前 via Android
对 Java 不熟,我的方案:
纯本地,sqlite 或 duckdb 或同类型方案 100 并发以内,clickhouse 或同类型 olap 方案 100 以上并发,出门左转找数据团队。 |
3
jiangboyueplus OP @imzhoukunqiang 作为一个数据导入的需求,我就喜欢改动最小的方案。我去了解下
|
4
sagaxu 228 天前
大 csv 不要用 easyExcel 读,用 commons csv ,CSVParser 可以迭代器访问,不用全部载入内存
边读边聚合,一次汇总完所有指标,同一个文件只读一次 分表是分布到多个机器利用集群性能,或者把冷热数据分离降低规模,此处不适用 |
5
perbugwei 228 天前
9 千万条数据,那必然爆。
存到 mysql ,超过两千万也有问题。 不改程序,操作一下 csv ,把 csv 分割成多个 sheet 。 |
6
luozic 228 天前 1
这明显是 duckdb 的场景,关键是 duckdb 用得多案例多,mapdb 维护都没看到什么了
|
7
cslive 228 天前
shell 直接导入 csv 文件
|
8
Arivan996 228 天前
最核心的问题不是所有的数据都在内存中没做处理吗?
|
9
Karte 228 天前
核心问题是你要拿这些数据做什么?
|
10
Karte 228 天前
有谁会把 9 千万条数据一起做聚合的? 分批次聚合都能解决问题.
|
11
BBCCBB 228 天前
easyexcel 也是可以增量解析的, 你的问题在于要把所有数据都加到内存里.
|
12
winglight2016 228 天前
lz 不说完整的需求,这个问题无解
如果是纯聚合计算,用 spark 吧 |
13
beetlerx 228 天前 3
这不是 1BRC 很像么 看看这个
https://www.cnblogs.com/thisiswhy/p/18051585 |
14
dooonabe 228 天前
需求太模糊了
|
15
wxf666 228 天前
@luozic #6 感觉 DuckDB 读文件时,性能有点问题?
感觉 DuckDB 读空缓冲区后,Writer 才能继续写。写满后,DuckDB 才去读一样? 同样的内容,会因喂给 DuckDB 的姿势不同,表现出不同的速度差异。。 就像 Python 的假多线程一样,只能有一个线程活跃。。 |
16
yazinnnn0 228 天前
边读边算呗, 为啥要全读完
|
19
Vegetable 228 天前
有点抽象了,一个导入的需求而以,非得读到内存全量操作,就没有什么流式处理的可能吗?
|
21
fengpan567 216 天前
搞 2 张临时表,用先将原始数据初始化进去,然后存储过程批量计算 insert
|
22
jiangboyueplus OP @fengpan567 这也可以,就是现在很多人不可能没用过存储过程
|
23
Richared 208 天前
没太看懂需求,我理解的事不能分片么?不能分片我能想到的映射 hive 表用 hadoop 或者 spark 去算?
|