Minor fix: made "EXPLAIN" output to play well with JDBC output format
Fixed the broken JDBC output. Test from Shark `beeline`: ``` beeline> !connect jdbc:hive2://localhost:10000/ scan complete in 2ms Connecting to jdbc:hive2://localhost:10000/ Enter username for jdbc:hive2://localhost:10000/: lian Enter password for jdbc:hive2://localhost:10000/: Connected to: Hive (version 0.12.0) Driver: Hive (version 0.12.0) Transaction isolation: TRANSACTION_REPEATABLE_READ 0: jdbc:hive2://localhost:10000/> 0: jdbc:hive2://localhost:10000/> explain select * from src; +-------------------------------------------------------------------------------+ | plan | +-------------------------------------------------------------------------------+ | ExplainCommand [plan#2:0] | | HiveTableScan [key#0,value#1], (MetastoreRelation default, src, None), None | +-------------------------------------------------------------------------------+ 2 rows selected (1.386 seconds) ``` Before this change, the output looked something like this: ``` +-------------------------------------------------------------------------------+ | plan | +-------------------------------------------------------------------------------+ | ExplainCommand [plan#2:0] HiveTableScan [key#0,value#1], (MetastoreRelation default, src, None), None | +-------------------------------------------------------------------------------+ ``` Author: Cheng Lian <lian.cs.zju@gmail.com> Closes #1097 from liancheng/multiLineExplain and squashes the following commits: eb37967 [Cheng Lian] Made output of "EXPLAIN" play well with JDBC output format
This commit is contained in:
parent
273afcb254
commit
237b96bc59
|
@ -83,8 +83,8 @@ case class ExplainCommand(
|
||||||
override protected[sql] lazy val sideEffectResult: Seq[String] = this.toString.split("\n")
|
override protected[sql] lazy val sideEffectResult: Seq[String] = this.toString.split("\n")
|
||||||
|
|
||||||
def execute(): RDD[Row] = {
|
def execute(): RDD[Row] = {
|
||||||
val explanation = sideEffectResult.mkString("\n")
|
val explanation = sideEffectResult.map(row => new GenericRow(Array[Any](row)))
|
||||||
context.sparkContext.parallelize(Seq(new GenericRow(Array[Any](explanation))), 1)
|
context.sparkContext.parallelize(explanation, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
override def otherCopyArgs = context :: Nil
|
override def otherCopyArgs = context :: Nil
|
||||||
|
|
|
@ -49,7 +49,7 @@ class JavaHiveQLSuite extends FunSuite {
|
||||||
|
|
||||||
def isExplanation(result: JavaSchemaRDD) = {
|
def isExplanation(result: JavaSchemaRDD) = {
|
||||||
val explanation = result.collect().map(_.getString(0))
|
val explanation = result.collect().map(_.getString(0))
|
||||||
explanation.size == 1 && explanation.head.startsWith(explainCommandClassName)
|
explanation.size > 1 && explanation.head.startsWith(explainCommandClassName)
|
||||||
}
|
}
|
||||||
|
|
||||||
ignore("Query Hive native command execution result") {
|
ignore("Query Hive native command execution result") {
|
||||||
|
|
|
@ -169,7 +169,7 @@ class HiveQuerySuite extends HiveComparisonTest {
|
||||||
|
|
||||||
def isExplanation(result: SchemaRDD) = {
|
def isExplanation(result: SchemaRDD) = {
|
||||||
val explanation = result.select('plan).collect().map { case Row(plan: String) => plan }
|
val explanation = result.select('plan).collect().map { case Row(plan: String) => plan }
|
||||||
explanation.size == 1 && explanation.head.startsWith(explainCommandClassName)
|
explanation.size > 1 && explanation.head.startsWith(explainCommandClassName)
|
||||||
}
|
}
|
||||||
|
|
||||||
test("SPARK-1704: Explain commands as a SchemaRDD") {
|
test("SPARK-1704: Explain commands as a SchemaRDD") {
|
||||||
|
|
Loading…
Reference in a new issue