Search code examples
scalaapache-sparkapache-kudu

Apache Kudu with Apache Spark NoSuchMethodError: exportAuthenticationCredentials


I have this function with Spark and Scala:

import org.apache.kudu.client.CreateTableOptions
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
import org.apache.spark.sql.{DataFrame, Dataset, Encoders, SparkSession}
import org.apache.kudu.spark.kudu._

def save(df: DataFrame): Unit ={
    val kuduContext: KuduContext = new KuduContext("quickstart.cloudera:7051")

    kuduContext.createTable(
      "test_table", df.schema, Seq("anotheKey", "id", "date"),
      new CreateTableOptions()
        .setNumReplicas(1))

    kuduContext.upsertRows(df, "test_table")
  }

But when trying to create the kuduContext raises an exception:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.kudu.client.KuduClient.exportAuthenticationCredentials()[B
    at org.apache.kudu.spark.kudu.KuduContext.<init>(KuduContext.scala:63)
    at com.mypackge.myObject$.save(myObject.scala:24)
    at com.mypackge.myObject$$anonfun$main$1.apply$mcV$sp(myObject.scala:59)
    at com.mypackge.myObject$$anonfun$main$1.apply(myObject.scala:57)
    at com.mypackge.myObject$$anonfun$main$1.apply(myObject.scala:57)
    at com.mypackge.myObject$.time(myObject.scala:17)
    at com.mypackge.myObject$.main(myObject.scala:57)
    at com.mypackge.myObject.main(myObject.scala)

Spark works without any problem. I have installed kudu VM as described on official docs and I have logged from bash to impala instance without a problem.

Someone have any idea about what I am doing wrong?


Solution

  • The problem was a dependency of the project using an old version of kudu-client (1.2.0), when I was using kudu-spark 1.3.0 (which includes kudu-client 1.3.0). Excluding kudu-client from pom.xml was the solution.