You are viewing a plain text version of this content. The canonical link for it is here.
Posted to reviews@spark.apache.org by maropu <gi...@git.apache.org> on 2018/04/05 04:05:28 UTC

[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

GitHub user maropu opened a pull request:

    https://github.com/apache/spark/pull/20980

    [SPARK-23589][SQL] ExternalMapToCatalyst should support interpreted execution

    ## What changes were proposed in this pull request?
    This pr supported interpreted mode for `ExternalMapToCatalyst`.
    
    ## How was this patch tested?
    Added tests in `ObjectExpressionsSuite`.

You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/maropu/spark SPARK-23589

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/spark/pull/20980.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #20980
    
----
commit 52e76d760b2c9e1c9c72e1ee98a664bcf92c2c35
Author: Takeshi Yamamuro <ya...@...>
Date:   2018-03-09T07:37:57Z

    ExternalMapToCatalyst should support interpreted execution

----


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/1989/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r183374589
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1255,8 +1255,64 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val mapCatalystConverter: Any => (Array[Any], Array[Any]) = child.dataType match {
    +    case ObjectType(cls) if classOf[java.util.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[java.util.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        val iter = data.entrySet().iterator()
    +        var i = 0
    +        while (iter.hasNext) {
    +          val entry = iter.next()
    +          val (key, value) = (entry.getKey, entry.getValue)
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    +          } else {
    +            throw new RuntimeException("Cannot use null as map key!")
    +          }
    +          values(i) = if (value != null) {
    +            valueConverter.eval(InternalRow.fromSeq(value :: Nil))
    +          } else {
    +            null
    +          }
    +          i += 1
    +        }
    +        (keys, values)
    +      }
    +
    +    case ObjectType(cls) if classOf[scala.collection.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[scala.collection.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        var i = 0
    +        for ((key, value) <- data) {
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    --- End diff --
    
    Same.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89005/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2469/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89564 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89564/testReport)** for PR 20980 at commit [`b13f893`](https://github.com/apache/spark/commit/b13f89367735e3b1390a86c62a1a9b433e62df9a).
     * This patch **fails from timeout after a configured wait of \`300m\`**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89005 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89005/testReport)** for PR 20980 at commit [`8783b2b`](https://github.com/apache/spark/commit/8783b2b76d6e2b2848d874676d68e76c5f360e8b).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2037/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89619/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89549/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    @maropu one more thing, otherwise LGTM.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/spark/pull/20980


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89606 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89606/testReport)** for PR 20980 at commit [`ec508cf`](https://github.com/apache/spark/commit/ec508cfb7c7a665c6fa0c95d645413d566a2a234).
     * This patch **fails due to an unknown error code, -9**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2482/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    ok, Thanks!


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89709 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89709/testReport)** for PR 20980 at commit [`eaef6b3`](https://github.com/apache/spark/commit/eaef6b374f86835bb08b9abf6d09d28aec1da9a8).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89564/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89564 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89564/testReport)** for PR 20980 at commit [`b13f893`](https://github.com/apache/spark/commit/b13f89367735e3b1390a86c62a1a9b433e62df9a).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r183070120
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -472,6 +474,61 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
         val deserializer = toMapExpr.copy(inputData = Literal.create(data))
         checkObjectExprEvaluation(deserializer, expected = data)
       }
    +
    +  private def javaSerializerFor(beanClass: Class[_])(inputObject: Expression): CreateNamedStruct = {
    +    JavaTypeInference.serializerFor(inputObject, TypeToken.of(beanClass)) match {
    +      case e => CreateNamedStruct(Literal("value") :: e :: Nil)
    +    }
    +  }
    +
    +  test("SPARK-23589 ExternalMapToCatalyst should support interpreted execution") {
    --- End diff --
    
    ok


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89619 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89619/testReport)** for PR 20980 at commit [`ec508cf`](https://github.com/apache/spark/commit/ec508cfb7c7a665c6fa0c95d645413d566a2a234).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    retest this please


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r179355354
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1176,8 +1176,28 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val keyCatalystConverter =
    +    CatalystTypeConverters.createToCatalystConverter(dataType.keyType)
    +  private lazy val valueCatalystConverter =
    +    CatalystTypeConverters.createToCatalystConverter(dataType.valueType)
    +
    +  override def eval(input: InternalRow): Any = {
    +    val result = child.eval(input)
    +    if (result != null) {
    +      val mapValue = result.asInstanceOf[Map[Any, Any]]
    --- End diff --
    
    ok


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/88924/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #88924 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/88924/testReport)** for PR 20980 at commit [`52e76d7`](https://github.com/apache/spark/commit/52e76d760b2c9e1c9c72e1ee98a664bcf92c2c35).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #88980 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/88980/testReport)** for PR 20980 at commit [`8783b2b`](https://github.com/apache/spark/commit/8783b2b76d6e2b2848d874676d68e76c5f360e8b).
     * This patch **fails Spark unit tests**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89606/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r183036460
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -472,6 +474,61 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
         val deserializer = toMapExpr.copy(inputData = Literal.create(data))
         checkObjectExprEvaluation(deserializer, expected = data)
       }
    +
    +  private def javaSerializerFor(beanClass: Class[_])(inputObject: Expression): CreateNamedStruct = {
    +    JavaTypeInference.serializerFor(inputObject, TypeToken.of(beanClass)) match {
    +      case e => CreateNamedStruct(Literal("value") :: e :: Nil)
    +    }
    +  }
    +
    +  test("SPARK-23589 ExternalMapToCatalyst should support interpreted execution") {
    --- End diff --
    
    One more thing, can you please directly add `ExternalMapToCatalyst` expressions here. Using `javaSerializerFor` for this is pretty confusing and might cause us to test a different code path at some point.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #88924 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/88924/testReport)** for PR 20980 at commit [`52e76d7`](https://github.com/apache/spark/commit/52e76d760b2c9e1c9c72e1ee98a664bcf92c2c35).
     * This patch **fails Spark unit tests**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182734997
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/JavaTypeInference.scala ---
    @@ -357,7 +357,8 @@ object JavaTypeInference {
         }
       }
     
    -  private def serializerFor(inputObject: Expression, typeToken: TypeToken[_]): Expression = {
    +  private[catalyst] def serializerFor(
    +      inputObject: Expression, typeToken: TypeToken[_]): Expression = {
    --- End diff --
    
    NIT: put `typeToken` on a new line?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182945511
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -415,6 +417,36 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
           }
         }
       }
    +
    +  private def javaSerializerFor(beanClass: Class[_])(inputObject: Expression): CreateNamedStruct = {
    +    JavaTypeInference.serializerFor(inputObject, TypeToken.of(beanClass)) match {
    +      case e => CreateNamedStruct(Literal("value") :: e :: Nil)
    +    }
    +  }
    +
    +  test("SPARK-23589 ExternalMapToCatalyst should support interpreted execution") {
    --- End diff --
    
    done


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    ping


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89698 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89698/testReport)** for PR 20980 at commit [`eaef6b3`](https://github.com/apache/spark/commit/eaef6b374f86835bb08b9abf6d09d28aec1da9a8).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89606 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89606/testReport)** for PR 20980 at commit [`ec508cf`](https://github.com/apache/spark/commit/ec508cfb7c7a665c6fa0c95d645413d566a2a234).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89698 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89698/testReport)** for PR 20980 at commit [`eaef6b3`](https://github.com/apache/spark/commit/eaef6b374f86835bb08b9abf6d09d28aec1da9a8).
     * This patch **fails due to an unknown error code, -9**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    retest this please


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182734528
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1197,8 +1197,64 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val mapCatalystConverter: Any => (Array[Any], Array[Any]) = child.dataType match {
    +    case ObjectType(cls) if classOf[java.util.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[java.util.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        val iter = data.entrySet().iterator()
    +        var i = 0
    +        while (iter.hasNext) {
    +          val entry = iter.next()
    +          val (key, value) = (entry.getKey, entry.getValue)
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    +          } else {
    +            throw new RuntimeException("Cannot use null as map key!")
    +          }
    +          values(i) = if (value != null) {
    +            valueConverter.eval(InternalRow.fromSeq(value :: Nil))
    +          } else {
    +            null
    +          }
    +          i += 1
    +        }
    +        (keys, values)
    +      }
    +
    +    case ObjectType(cls) if classOf[scala.collection.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[scala.collection.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        var i = 0
    +        for ((key, value) <- data) {
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    +          } else {
    +            throw new RuntimeException("Cannot use null as map key!")
    +          }
    +          values(i) = if (value != null) {
    +            valueConverter.eval(InternalRow.fromSeq(value :: Nil))
    +          } else {
    +            null
    +          }
    +          i += 1
    +        }
    +        (keys, values)
    +      }
    +  }
    +
    +  override def eval(input: InternalRow): Any = {
    +    val result = child.eval(input)
    +    if (result != null) {
    +      val (keys, values) = mapCatalystConverter(result)
    +      new ArrayBasedMapData(ArrayData.toArrayData(keys), ArrayData.toArrayData(values))
    --- End diff --
    
    So, this is probably `Ok` since `ArrayData.toArrayData` calls `new GenericArrayData(any)` which calls `GenericArrayData.anyToSeq` which converts the array into a seq (`WrappedArray`) which is then converted back into an array. It might copy at the end, but I am not entirely sure.
    
    Can we cut the red tape here and just create `GenericArrayData` objects on the arrays directly?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #88980 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/88980/testReport)** for PR 20980 at commit [`8783b2b`](https://github.com/apache/spark/commit/8783b2b76d6e2b2848d874676d68e76c5f360e8b).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182734666
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -415,6 +417,36 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
           }
         }
       }
    +
    +  private def javaSerializerFor(beanClass: Class[_])(inputObject: Expression): CreateNamedStruct = {
    +    JavaTypeInference.serializerFor(inputObject, TypeToken.of(beanClass)) match {
    +      case e => CreateNamedStruct(Literal("value") :: e :: Nil)
    +    }
    +  }
    +
    +  test("SPARK-23589 ExternalMapToCatalyst should support interpreted execution") {
    --- End diff --
    
    Can you also add a test for a `null` key?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89619 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89619/testReport)** for PR 20980 at commit [`ec508cf`](https://github.com/apache/spark/commit/ec508cfb7c7a665c6fa0c95d645413d566a2a234).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182930489
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -415,6 +417,36 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
           }
         }
       }
    +
    +  private def javaSerializerFor(beanClass: Class[_])(inputObject: Expression): CreateNamedStruct = {
    +    JavaTypeInference.serializerFor(inputObject, TypeToken.of(beanClass)) match {
    +      case e => CreateNamedStruct(Literal("value") :: e :: Nil)
    +    }
    +  }
    +
    +  test("SPARK-23589 ExternalMapToCatalyst should support interpreted execution") {
    --- End diff --
    
    ok


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2578/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2056/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    retest this please


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89698/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by viirya <gi...@git.apache.org>.
Github user viirya commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r179349022
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1176,8 +1176,28 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val keyCatalystConverter =
    +    CatalystTypeConverters.createToCatalystConverter(dataType.keyType)
    +  private lazy val valueCatalystConverter =
    +    CatalystTypeConverters.createToCatalystConverter(dataType.valueType)
    +
    +  override def eval(input: InternalRow): Any = {
    +    val result = child.eval(input)
    +    if (result != null) {
    +      val mapValue = result.asInstanceOf[Map[Any, Any]]
    --- End diff --
    
    The external map can be `java.util.Map` or `scala.collection.Map`.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r183373874
  
    --- Diff: sql/catalyst/src/test/scala/org/apache/spark/sql/catalyst/expressions/ObjectExpressionsSuite.scala ---
    @@ -501,6 +502,111 @@ class ObjectExpressionsSuite extends SparkFunSuite with ExpressionEvalHelper {
           InternalRow.fromSeq(Seq(Row(1))),
           "java.lang.Integer is not a valid external type for schema of double")
       }
    +
    +  private def javaMapSerializerFor(
    +      keyClazz: Class[_],
    +      valueClazz: Class[_])(inputObject: Expression): Expression = {
    +
    +    def kvSerializerFor(inputObject: Expression, clazz: Class[_]): Expression = clazz match {
    +      case c if c == classOf[java.lang.Integer] =>
    +        Invoke(inputObject, "intValue", IntegerType)
    +      case c if c == classOf[java.lang.String] =>
    +        StaticInvoke(
    +          classOf[UTF8String],
    +          StringType,
    +          "fromString",
    +          inputObject :: Nil,
    +          returnNullable = false)
    +    }
    +
    +    ExternalMapToCatalyst(
    +      inputObject,
    +      ObjectType(keyClazz),
    +      kvSerializerFor(_, keyClazz),
    +      keyNullable = true,
    +      ObjectType(valueClazz),
    +      kvSerializerFor(_, valueClazz),
    +      valueNullable = true
    +    )
    +  }
    +
    +  private def scalaMapSerializerFor[T: TypeTag, U: TypeTag](inputObject: Expression): Expression = {
    +    import org.apache.spark.sql.catalyst.ScalaReflection._
    +
    +    val curId = new java.util.concurrent.atomic.AtomicInteger()
    --- End diff --
    
    What is this?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89549 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89549/testReport)** for PR 20980 at commit [`b13f893`](https://github.com/apache/spark/commit/b13f89367735e3b1390a86c62a1a9b433e62df9a).
     * This patch **fails due to an unknown error code, -9**.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r182933940
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1197,8 +1197,64 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val mapCatalystConverter: Any => (Array[Any], Array[Any]) = child.dataType match {
    +    case ObjectType(cls) if classOf[java.util.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[java.util.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        val iter = data.entrySet().iterator()
    +        var i = 0
    +        while (iter.hasNext) {
    +          val entry = iter.next()
    +          val (key, value) = (entry.getKey, entry.getValue)
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    +          } else {
    +            throw new RuntimeException("Cannot use null as map key!")
    +          }
    +          values(i) = if (value != null) {
    +            valueConverter.eval(InternalRow.fromSeq(value :: Nil))
    +          } else {
    +            null
    +          }
    +          i += 1
    +        }
    +        (keys, values)
    +      }
    +
    +    case ObjectType(cls) if classOf[scala.collection.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[scala.collection.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        var i = 0
    +        for ((key, value) <- data) {
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    +          } else {
    +            throw new RuntimeException("Cannot use null as map key!")
    +          }
    +          values(i) = if (value != null) {
    +            valueConverter.eval(InternalRow.fromSeq(value :: Nil))
    +          } else {
    +            null
    +          }
    +          i += 1
    +        }
    +        (keys, values)
    +      }
    +  }
    +
    +  override def eval(input: InternalRow): Any = {
    +    val result = child.eval(input)
    +    if (result != null) {
    +      val (keys, values) = mapCatalystConverter(result)
    +      new ArrayBasedMapData(ArrayData.toArrayData(keys), ArrayData.toArrayData(values))
    --- End diff --
    
    ya, I also think you're right. I'll fix.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by maropu <gi...@git.apache.org>.
Github user maropu commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    retest this please


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89005 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89005/testReport)** for PR 20980 at commit [`8783b2b`](https://github.com/apache/spark/commit/8783b2b76d6e2b2848d874676d68e76c5f360e8b).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Merged build finished. Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/89709/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2571/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89709 has finished](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89709/testReport)** for PR 20980 at commit [`eaef6b3`](https://github.com/apache/spark/commit/eaef6b374f86835bb08b9abf6d09d28aec1da9a8).
     * This patch passes all tests.
     * This patch merges cleanly.
     * This patch adds no public classes.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2519/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test FAILed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/88980/
    Test FAILed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark pull request #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should s...

Posted by hvanhovell <gi...@git.apache.org>.
Github user hvanhovell commented on a diff in the pull request:

    https://github.com/apache/spark/pull/20980#discussion_r183374541
  
    --- Diff: sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/expressions/objects/objects.scala ---
    @@ -1255,8 +1255,64 @@ case class ExternalMapToCatalyst private(
       override def dataType: MapType = MapType(
         keyConverter.dataType, valueConverter.dataType, valueContainsNull = valueConverter.nullable)
     
    -  override def eval(input: InternalRow): Any =
    -    throw new UnsupportedOperationException("Only code-generated evaluation is supported")
    +  private lazy val mapCatalystConverter: Any => (Array[Any], Array[Any]) = child.dataType match {
    +    case ObjectType(cls) if classOf[java.util.Map[_, _]].isAssignableFrom(cls) =>
    +      (input: Any) => {
    +        val data = input.asInstanceOf[java.util.Map[Any, Any]]
    +        val keys = new Array[Any](data.size)
    +        val values = new Array[Any](data.size)
    +        val iter = data.entrySet().iterator()
    +        var i = 0
    +        while (iter.hasNext) {
    +          val entry = iter.next()
    +          val (key, value) = (entry.getKey, entry.getValue)
    +          keys(i) = if (key != null) {
    +            keyConverter.eval(InternalRow.fromSeq(key :: Nil))
    --- End diff --
    
    Please reuse the `InternalRow`.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by AmplabJenkins <gi...@git.apache.org>.
Github user AmplabJenkins commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    Test PASSed.
    Refer to this link for build results (access rights to CI server needed): 
    https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution/2510/
    Test PASSed.


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org


[GitHub] spark issue #20980: [SPARK-23589][SQL] ExternalMapToCatalyst should support ...

Posted by SparkQA <gi...@git.apache.org>.
Github user SparkQA commented on the issue:

    https://github.com/apache/spark/pull/20980
  
    **[Test build #89549 has started](https://amplab.cs.berkeley.edu/jenkins/job/SparkPullRequestBuilder/89549/testReport)** for PR 20980 at commit [`b13f893`](https://github.com/apache/spark/commit/b13f89367735e3b1390a86c62a1a9b433e62df9a).


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscribe@spark.apache.org
For additional commands, e-mail: reviews-help@spark.apache.org