1

我在 Spark 和 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")
  }

但是在尝试创建 kuduContext 时会引发异常:

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 工作没有任何问题。我已经按照官方文档中的描述安装了 kudu VM,并且我已经从 bash 登录到 impala 实例没有问题。

有人知道我做错了什么吗?

4

1 回答 1

0

当我使用 kudu-spark 1.3.0(包括 kudu-client 1.3.0)时,问题是使用旧版本的 kudu-client(1.2.0)的项目依赖项。从 pom.xml 中排除 kudu-client 是解决方案。

于 2017-03-22T11:19:02.877 回答