  The need for modern data analytics to combine relational, procedural, and
map-reduce-style functional processing is widely recognized. State-of-the-art
systems like Spark have added SQL front-ends and relational query optimization,
which promise an increase in expressiveness and performance. But how good are
these extensions at extracting high performance from modern hardware platforms?
  While Spark has made impressive progress, we show that for relational
workloads, there is still a significant gap compared with best-of-breed query
engines. And when stepping outside of the relational world, query optimization
techniques are ineffective if large parts of a computation have to be treated
as user-defined functions (UDFs).
  We present Flare: a new back-end for Spark that brings performance closer to
the best SQL engines, without giving up the added expressiveness of Spark. We
demonstrate order of magnitude speedups both for relational workloads such as
TPC-H, as well as for a range of machine learning kernels that combine
relational and iterative functional processing.
  Flare achieves these results through (1) compilation to native code, (2)
replacing parts of the Spark runtime system, and (3) extending the scope of
optimization and code generation to large classes of UDFs.
