【问题标题】:List[Row] to RDD[CassandrRow] conversion in scalascala中的List[Row]到RDD[CassandrRow]转换
【发布时间】:2018-10-10 09:50:54
【问题描述】:

我有以下代码:-

 val result = session.execute("Select * from table where imei= '" + imei + "'")
 val list = result.all()
 val sCollection = list.asScala
 val rdd = sc.parallelize(Seq(sCollection))

我正在尝试将 list[Row] 创建到 RDD[CassandraRow] 并且我发现在某个地方我们需要将此列表转换为 scala 集合,然后再将其转换为 RDD,但是当我尝试运行时,它会给出错误:

value asScala is not a member of java.util.List[com.datastax.driver.core.Row]

我哪里出错了,可以做些什么来解决这个问题?

谢谢,

【问题讨论】:

    标签: scala apache-spark rdd cassandra-3.0 spark-cassandra-connector


    【解决方案1】:

    一开始你错过了import scala.collection.JavaConverters._。但是我不推荐您编写的解决方案,因为它不可扩展。

    Spark-Cassandra连接器,可以分布式(可扩展)方式将数据加载到Spark中。

    【讨论】:

    • 你的意思是说我应该使用 spark sc.cassandraTable 来获取记录,而不是使用 session.execute ?
    • 是的,您应该使用 Spark 连接到 Cassandra,并从 Spark (spark-sql) 的角度对 Cassandra 数据进行操作(查询)。
    • Spark-SQL vs sc.cassandraTable 哪个更快?
    • 我尝试使用这个:- val result = sqlContext.sql("Select * from table where imei= '" + entry(0).trim() + "'") val rows = result. rdd & 我收到错误:- 线程“主”org.apache.spark.sql.AnalysisException 中的异常:找不到表或视图:表;第 1 行 pos 14 位于 org.apache.spark.sql.catalyst.analysis.package$AnalysisErrorAt.failAnalysis(package.scala:42) 处 org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveRelations$.org$apache $spark$sql$catalyst$analysis$Analyzer$ResolveRelations$$lookupTableFromCatalog(Analyzer.scala:449
    • 这里是答案:spark.apache.org/docs/latest/… 请阅读 Spark 编程指南——它是 Spark 教程的精髓。
    猜你喜欢
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多