aboutsummaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorMichael Armbrust <michael@databricks.com>2014-12-30 11:24:46 -0800
committerMichael Armbrust <michael@databricks.com>2014-12-30 11:24:59 -0800
commitcde8a310a76d780b9d178218b219f85ca30a1968 (patch)
tree25a2ddc78857c83559e67ace4f192ba0eb991361 /sql
parent42809db9bc35501095e23d44f5418f02082371b3 (diff)
downloadspark-cde8a310a76d780b9d178218b219f85ca30a1968.tar.gz
spark-cde8a310a76d780b9d178218b219f85ca30a1968.tar.bz2
spark-cde8a310a76d780b9d178218b219f85ca30a1968.zip
[SPARK-4908][SQL] Prevent multiple concurrent hive native commands
This is just a quick fix that locks when calling `runHive`. If we can find a way to avoid the error without a global lock that would be better. Author: Michael Armbrust <michael@databricks.com> Closes #3834 from marmbrus/hiveConcurrency and squashes the following commits: bf25300 [Michael Armbrust] prevent multiple concurrent hive native commands (cherry picked from commit 480bd1d2edd1de06af607b0cf3ff3c0b16089add) Signed-off-by: Michael Armbrust <michael@databricks.com>
Diffstat (limited to 'sql')
-rw-r--r--sql/hive/src/main/scala/org/apache/spark/sql/hive/HiveContext.scala2
-rw-r--r--sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala7
2 files changed, 8 insertions, 1 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 5d8edfc783..e006d3b469 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
@@ -284,7 +284,7 @@ class HiveContext(sc: SparkContext) extends SQLContext(sc) {
* Execute the command using Hive and return the results as a sequence. Each element
* in the sequence is one row.
*/
- protected def runHive(cmd: String, maxRows: Int = 1000): Seq[String] = {
+ protected def runHive(cmd: String, maxRows: Int = 1000): Seq[String] = synchronized {
try {
val cmd_trimmed: String = cmd.trim()
val tokens: Array[String] = cmd_trimmed.split("\\s+")
diff --git a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
index af45dfd6e2..2100ae54ee 100644
--- a/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
+++ b/sql/hive/src/test/scala/org/apache/spark/sql/hive/execution/HiveQuerySuite.scala
@@ -56,6 +56,13 @@ class HiveQuerySuite extends HiveComparisonTest with BeforeAndAfter {
Locale.setDefault(originalLocale)
}
+ test("SPARK-4908: concurent hive native commands") {
+ (1 to 100).par.map { _ =>
+ sql("USE default")
+ sql("SHOW TABLES")
+ }
+ }
+
createQueryTest("constant object inspector for generic udf",
"""SELECT named_struct(
lower("AA"), "10",