在Spark 1.2.0的scala api中找不到saveAsNewAPIHadoopFile方法

时间:2016-01-15 07:40:42

标签: mongodb apache-spark

我的环境:scala 2.11.7,CDH上的火花1.2.0 火花组件-1.2.0-cdh5.3.8-hadoop2.5.0-cdh5.3.8.jar

我从mongo获得带有spark的数据。但无法找到saveAsNewAPIHadoopFile方法。只有saveAsTextFile,saveAsObjectFile方法可用于保存。

val mongoConfig = new Configuration()
mongoConfig.set("mongo.input.uri", "mongodb://192.168.0.211:27017/chat.article")
mongoConfig.set("mongo.input.query","{customerId: 'some mongo id', usage: {'$gt': 30}")
val articleRDD = sc.newAPIHadoopRDD(mongoConfig, classOf[MongoInputFormat], classOf[Text], classOf[BSONObject])

val outputConfig = new Configuration()
outputConfig.set("mongo.input.uri", "mongodb://192.168.0.211:27017/chat.recomm")
articleRDD.saveAsNewAPIHadoopFile("", classOf[Object], classOf[BSONObject],
  classOf[MongoOutputFormat[Object, BSONObject]], outputConfig)

这是我在Intellij IDEA中的屏幕截图 enter image description here

以下是我的build.sbt:

libraryDependencies += "org.mongodb.mongo-hadoop" % "mongo-hadoop-core" % "1.4.0"
libraryDependencies += "org.apache.hadoop" % "hadoop-common" % "2.5.0-cdh5.3.8"

【spark-assembly-1.2.0-cdh5.3.8-hadoop2.5.0-cdh5.3.8.jar】不在sbt中。我在cdh主目录中找到并手动将其移动到我的项目目录。

1 个答案:

答案 0 :(得分:2)

因为该方法不在该包中,而是在以下方法中:

<dependency>
    <groupId>org.mongodb</groupId>
    <artifactId>mongo-hadoop-core</artifactId>
    <version>1.4.0-SNAPSHOT</version>
</dependency>

您可能想要检查mongo-hadoop-core软件包的兼容性,以便为Spark 1.2使用正确的软件包