Hi devs,

I'm working on getting Apache Sedona upgraded to work with Spark 3.2, and
ran into a weird issue I wanted to get some feedback on. The PR and current
discussion can be found here:
https://github.com/apache/incubator-sedona/pull/557

To try to sum up in a quick way, this library defines custom expressions
and registers the expressions using
sparkSession.sessionState.functionRegistry.registerFunction. One of the
unit tests is now failing because the function can't be found when a
temporary view using that function is created in pure SQL.

Examples:
This fails with Undefined function: 'ST_PolygonFromEnvelope'. This function
is neither a registered temporary function nor a permanent function
registered in the database 'default'.:

 spark.sql(
        """
          |CREATE OR REPLACE TEMP VIEW pixels AS
          |SELECT pixel, shape FROM pointtable
          |LATERAL VIEW EXPLODE(ST_Pixelize(shape, 1000, 1000,
ST_PolygonFromEnvelope(-126.790180,24.863836,-64.630926,50.000))) AS
pixel
        """.stripMargin)

      // Test visualization partitioner
      val zoomLevel = 2
      val newDf = VizPartitioner(spark.table("pixels"), zoomLevel,
"pixel", new Envelope(0, 1000, 0, 1000))


But both of these work fine:

 val table = spark.sql(
       """
         |SELECT pixel, shape FROM pointtable
         |LATERAL VIEW EXPLODE(ST_Pixelize(shape, 1000, 1000,
ST_PolygonFromEnvelope(-126.790180,24.863836,-64.630926,50.000))) AS
pixel
        """.stripMargin)

      // Test visualization partitioner
      val zoomLevel = 2
      val newDf = VizPartitioner(table, zoomLevel, "pixel", new
Envelope(0, 1000, 0, 1000))

    val table = spark.sql(
       """
         |SELECT pixel, shape FROM pointtable
         |LATERAL VIEW EXPLODE(ST_Pixelize(shape, 1000, 1000,
ST_PolygonFromEnvelope(-126.790180,24.863836,-64.630926,50.000))) AS
pixel
        """.stripMargin)
      table.createOrReplaceTempView("pixels")

      // Test visualization partitioner
      val zoomLevel = 2
      val newDf = VizPartitioner(spark.table("pixels"), zoomLevel,
"pixel", new Envelope(0, 1000, 0, 1000))


So the main question is, is this a feature or a bug?

-- 
Adam Binford

Reply via email to