大数据量 join 操作

2019-01-09 19:15:31 +08:00
 Asan

a 和 b 通过字段 C 是有关联的,现在要把 a left join b,把 a 中的某些字段的值从 b 中补充过来。目前的做法是两个文件的数据分别建表入 MySQL,然后 join 操作,但是性能吃紧。想问下懂大数据的 v 友,使用大数据技术有没有更好的解决方案。

目前自己调研是使用 Hbase Hive SparkSQL 去搞,但是自己之前没有搞过大数据不知道这个调研结果是否可以

4781 次点击
所在节点    程序员
25 条回复
zbinlin
2019-01-09 19:32:37 +08:00
试试 PostgreSQL
surfire91
2019-01-09 19:35:59 +08:00
就这么点数据,索引加好了不得起飞?
hilbertz
2019-01-09 19:38:51 +08:00
怎么可能性能吃紧,你跑在树莓派上吗
Asan
2019-01-09 19:42:43 +08:00
@hilbertz a 表有 70+字段,b 表有 30+字段,join 的结果需要包含 a 表所有字段,然后将 join 结果写入文本文件
Asan
2019-01-09 19:43:18 +08:00
@surfire91 跟索引优化有关?
Asan
2019-01-09 19:43:35 +08:00
@zbinlin 这个 join 性能很好?
lanterboy
2019-01-09 19:44:32 +08:00
先弄清楚 性能吃紧的瓶颈在业务代码还是数据库
tumbzzc
2019-01-09 19:50:27 +08:00
这点数据都性能紧张的话,还搭建 hive 不是更紧张?
Asan
2019-01-09 19:58:39 +08:00
@lanterboy 是的,明天确认下是数据库问题还是文件 IO 问题,生产环境 a 表在千万级别
Asan
2019-01-09 19:59:57 +08:00
@surfire91 索引是已经加了的,跑完大概在 5 分钟左右
glacer
2019-01-09 20:00:12 +08:00
楼主的性能吃紧在 IO,每次都返回 100w 行 100+字段的数据,这能不慢吗
surfire91
2019-01-09 20:07:48 +08:00
@Asan 跑完是指什么跑完,只查了库,还干了别的吗?如果查库就占了近 5 分钟,那查询还是有问题的,100 个字段要说多也不多,主要还是看字段类型长度,两个表总共占了多少空间?机器什么配置?多大内存?
magicsilence
2019-01-09 20:15:26 +08:00
千万 A 表和四十万 B 表全 load 到 hive, 一个 hql 就能搞定。

sparksql 和 hbase 都不用。

另:hive 可以 on spark
zzlhr
2019-01-09 20:16:18 +08:00
建个视图试试
Mac
2019-01-09 20:22:40 +08:00
很明显 io 的瓶颈,每次都全量输出不慢才怪呢
sunnyadamm
2019-01-09 20:28:39 +08:00
io 问题,量不大,
zhchyu999
2019-01-09 20:29:16 +08:00
SQLServer 也能很轻松的搞定,这点量远远不到大数据;
试试优化下你的业务逻辑或者查询逻辑,是否真的需要这么多数据全量 join,能否先缩小一下范围
尽量少的引入外部组件,业务扔不掉,后期维护真的很难
liprais
2019-01-09 20:30:15 +08:00
Spark sql 就行了,要不了多久
laqow
2019-01-09 20:39:25 +08:00
没有后续查找需要的话是不是只把 B 放数据库,然后逐个 A 行用 C 关键字查询 B 把结果放回 A 就可以了?
50infivedays
2019-01-09 20:42:27 +08:00
这个量确实比较小

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/525469

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX