- BigQuery's execution is pipelined (don't wait for step 1 to finish to start step 2)
- BigQuery's in-memory shuffler is not co-tenant to compute
And, of course, it's one thing to have software and hardware. BigQuery provides a fully-managed, fully-encrypted, HA, redundant, and constantly seamlessly maintaned and upgraded service [2].
[1]https://cloud.google.com/blog/big-data/2016/08/in-memory-que...
[2]https://cloud.google.com/blog/big-data/2016/08/google-bigque...
(disc: work on BigQuery)
Sorry - what does co-tenant to compute mean?
By co-tenant to compute, I mean that processing nodes themselves handle the shuffle in Spark. This can cause non-obvious bottlenecks. BigQuery handles shuffle outside of the processing nodes [1].
[0] https://cloud.google.com/blog/big-data/2016/05/no-shard-left...
[1] https://cloud.google.com/blog/big-data/2016/08/in-memory-que...
On the upside, massively parallel SQL databases allow you to express what probably took facebook a lot of code in a single SQL query.
On the downside, with any database that supports streaming inserts and dynamic resharding, you will have to eventually write each entry more than once. The more manual approach with spark prevents this.
[0]http://static.googleusercontent.com/media/research.google.co...