From 3d693295dca8e6268495c0d73048796cb43d5fe9 Mon Sep 17 00:00:00 2001 From: wangfei Date: Mon, 26 Jan 2015 11:37:53 +0800 Subject: [PATCH] added CheckMultiAlias to analyzer --- .../org/apache/spark/sql/hive/HiveContext.scala | 1 + .../scala/org/apache/spark/sql/hive/hiveUdfs.scala | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala index 7cee31130386c..6db7bd90970df 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala @@ -256,6 +256,7 @@ class HiveContext(sc: SparkContext) extends SQLContext(sc) { catalog.PreInsertionCasts :: ExtractPythonUdfs :: ResolveUdtfsAlias :: + CheckMultiAlias :: Nil } diff --git a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala index 0d718110331b8..97dae2aedbc20 100644 --- a/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala +++ b/sql/hive/src/main/scala/org/apache/spark/sql/hive/hiveUdfs.scala @@ -339,15 +339,15 @@ private[spark] object ResolveUdtfsAlias extends Rule[LogicalPlan] { * Checks for multi alias, now multi alias only support udtfs */ object CheckMultiAlias extends Rule[LogicalPlan] { - def apply(plan: LogicalPlan): LogicalPlan = { - plan.transform { + def apply(plan: LogicalPlan): LogicalPlan = plan transform { + case q: LogicalPlan => q transformExpressions { case multiAlias @ MultiAlias(udtf, names) => assert(udtf.isInstanceOf[HiveGenericUdtf], "multi alias's child expression should be udfs") assert(udtf.asInstanceOf[HiveGenericUdtf].output.size == names.size, - s"The number of multi aliases supplied in the AS clause does not match the number of " + - s"columns output by the UDTF expected ${udtf.asInstanceOf[HiveGenericUdtf].output.size}" + - s" aliases but got ${names.size}") - multiAlias + s"The number of multi aliases supplied in the AS clause does not match the number of" + + s" columns output by the UDTF expected" + + s" ${udtf.asInstanceOf[HiveGenericUdtf].output.size} aliases but got ${names.size}") + multiAlias } } }