Uploaded image for project: 'Phoenix'
  1. Phoenix
  2. PHOENIX-2469

Problem with ARRAYs in Phoenix-spark

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • None
    • 4.7.0
    • None
    • None

    Description

      I've recently found some behaviour that I found buggy when working with phoenix-spark and arrays.

      Take a look at those unit tests:

        test("Can save arrays from custom dataframes back to phoenix") {
          val dataSet = List(Row(2L, Array("String1", "String2", "String3")))
      
          val sqlContext = new SQLContext(sc)
      
          val schema = StructType(
              Seq(StructField("ID", LongType, nullable = false),
                  StructField("VCARRAY", ArrayType(StringType))))
      
          val rowRDD = sc.parallelize(dataSet)
      
          // Apply the schema to the RDD.
          val df = sqlContext.createDataFrame(rowRDD, schema)
      
          df.write
            .format("org.apache.phoenix.spark")
            .options(Map("table" -> "ARRAY_TEST_TABLE", "zkUrl" -> quorumAddress))
            .mode(SaveMode.Overwrite)
            .save()
        }
      
        test("Can save arrays of AnyVal type back to phoenix") {
          val dataSet = List((2L, Array(1, 2, 3), Array(1L, 2L, 3L)))
      
          sc
            .parallelize(dataSet)
            .saveToPhoenix(
              "ARRAY_ANYVAL_TEST_TABLE",
              Seq("ID", "INTARRAY", "BIGINTARRAY"),
              zkUrl = Some(quorumAddress)
            )
      
          // Load the results back
          val stmt = conn.createStatement()
          val rs = stmt.executeQuery("SELECT INTARRAY, BIGINTARRAY FROM ARRAY_ANYVAL_TEST_TABLE WHERE ID = 2")
          rs.next()
          val intArray = rs.getArray(1).getArray().asInstanceOf[Array[Int]]
          val longArray = rs.getArray(2).getArray().asInstanceOf[Array[Long]]
      
          // Verify the arrays are equal
          intArray shouldEqual dataSet(0)._2
          longArray shouldEqual dataSet(0)._3
        }
      

      Both fail with some ClassCastExceptions.

      Attachments

        1. phoenix-spark.patch
          7 kB
          Dawid Wysakowicz

        Activity

          People

            Unassigned Unassigned
            dwysakowicz Dawid Wysakowicz
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: