我有一个hive查询,每天以map-reduce模式运行 . 总处理时间需要20分钟,根据我们的日常流程很好 . 我期待在spark框架中执行 .

首先,我在hive shell中设置了执行引擎= spark并执行了相同的查询 .

该过程有转换和动作,整个查询大约8分钟完成 . 此查询具有多个子查询,IN子句和where条件 . 问题是,spark-environment如何创建RDD复杂查询(假设我刚刚运行与hive中相同的查询) . 它是否为每个子查询创建RDD?

现在我想利用spark-sql代替hive查询 . 在我们有很多子查询和聚合的情况下,我们应该如何处理这类复杂问题 . 我理解,对于关系数据计算,我们需要利用数据帧 .

这是一个正确的方法,在spark-sql中重写它们或坚持设置执行引擎= spark和运行配置单元查询的东西 . 如果在spark-sql中编写查询并在spark上运行有优势,那么优势是什么 .

对于所有子查询以及各种过滤器和聚合逻辑,数据帧API的性能如何 .