首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spark-cassandra-connector: toArray不工作

Spark-cassandra-connector: toArray不工作
EN

Stack Overflow用户
提问于 2016-09-30 16:34:32
回答 2查看 1.2K关注 0票数 4

我在Scala中使用spark- cassandra -connector,我想从cassandra读取数据并通过toArray方法显示它。但是,我收到一条错误消息,指出它不是类的成员,但在API中指明了它。有人能帮我找出我的错误吗?

以下是我的文件:

build.sbt:

代码语言:javascript
复制
name := "Simple_Project"

version := "1.0"

scalaVersion := "2.11.8"

assemblyMergeStrategy in assembly := {
 case PathList("META-INF", xs @ _*) => MergeStrategy.discard
 case x => MergeStrategy.first
}

libraryDependencies += "org.apache.spark" %% "spark-core" % "2.0.0-preview"
libraryDependencies += "org.apache.spark" %% "spark-sql" % "2.0.0-preview"
resolvers += "Spark Packages Repo" at "https://dl.bintray.com/spark-packages/maven"
libraryDependencies += "datastax" % "spark-cassandra-connector" % "2.0.0-M2-s_2.11"

SimpleScala.scala:

代码语言:javascript
复制
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.spark.sql._
import org.apache.spark.sql.functions._
import com.datastax.spark.connector._
import com.datastax.spark.connector.rdd._
import org.apache.spark.sql.cassandra._
import org.apache.spark.sql.SQLContext
import com.datastax.spark.connector.cql.CassandraConnector._

object SimpleApp {

  def main(args: Array[String]) {

    val conf = new SparkConf().setAppName("Simple Application")
    conf.set("spark.cassandra.connection.host", "127.0.0.1")
    val sc = new SparkContext(conf)

    val rdd_2 = sc.cassandraTable("test_2", "words")

    rdd_2.toArray.foreach(println)
   }
 }

cqlsh函数:

代码语言:javascript
复制
CREATE KEYSPACE test_2 WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1 };

CREATE TABLE test_2.words (word text PRIMARY KEY, count int);
INSERT INTO test_2.words (word, count) VALUES ('foo', 20);
INSERT INTO test_2.words (word, count) VALUES ('bar', 20);

错误消息:

代码语言:javascript
复制
[info] Loading global plugins from /home/andi/.sbt/0.13/plugins
[info] Resolving org.scala-sbt.ivy#ivy;2.3.0-sbt-2cc8d2761242b072cedb0a04cb39435[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Loading project definition from /home/andi/test_spark/project
[info] Updating {file:/home/andi/test_spark/project/}test_spark-build...
[info] Resolving org.scala-sbt.ivy#ivy;2.3.0-sbt-2cc8d2761242b072cedb0a04cb39435[info] Resolving org.fusesource.jansi#jansi;1.4 ...
[info] Done updating.
[info] Set current project to Simple_Project (in build file:/home/andi/test_spark/)
[info] Compiling 1 Scala source to /home/andi/test_spark/target/scala-2.11/classes...
[error] /home/andi/test_spark/src/main/scala/SimpleApp.scala:50: value toArray is not a member of com.datastax.spark.connector.rdd.CassandraTableScanRDD[com.datastax.spark.connector.CassandraRow]
[error] rdd_2.toArray.foreach(println)
[error]       ^
[error] one error found
[error] (compile:compileIncremental) Compilation failed

非常感谢你,安迪

EN

回答 2

Stack Overflow用户

发布于 2016-09-30 18:49:25

2.0.0发布Spark Cassandra连接器以来,CassandraTableScanRDD.toArray方法已被弃用和删除。在1.6.0发布之前,这种方法一直存在。您可以使用collect方法。

票数 3
EN

Stack Overflow用户

发布于 2017-11-06 10:10:23

不幸的是,文档Spark Cassandra Connector仍然使用toArray。无论如何,这就是它的工作原理

代码语言:javascript
复制
rdd_2.collect.foreach(println)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39787091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档