【问题标题】:spark cassandra maptype selecting only a particular key as column where number of keys are more than 4spark cassandra maptype 仅选择特定键作为键数超过 4 的列
【发布时间】:2015-08-10 22:04:15
【问题描述】:

我需要从 Cassandra 数据框中的地图中提取值作为列 我有一个像

这样的数据框
 val cc = new CassandraSQLContext(sc)
 val rdd  = cc.sql("select * from sams.events where appname = 'test'");

rdd 中的列是“appname”作为字符串,“client”作为 Map 我在 cassandra 中的客户端是映射和键的映射,例如“平台”、“设备”值作为“android”或“ios”

我只需要选择平台键并将其作为一列

这就是我所做的 rdd.registerTempTable("newdf") var df2 = cc.sql("select appname, client.platform from newdf");

这会成功,但平台值始终为空。 我的 newdf 有一个值图。

[更新] 如果 cassandra 表映射列的键小于 5,则上述方法有效,但如果我的键数大于或等于 5,则它不起作用并给我全部为空。 这真的很奇怪。请帮我解决这个问题。

【问题讨论】:

    标签: cassandra apache-spark


    【解决方案1】:

    casandrasql 上下文存在一些严重问题。这也是用于 spark 的 cassandra 连接器的问题之一。我正在使用这个版本 spark-cassandra-connector_2.10-1.4.0-M1.jar。我会认真建议人们不要使用 cassandra sql 上下文,因为它有很多问题。改用这个

    val cassDF = sqlContext.read.format("org.apache.spark.sql.cassandra").options(Map("table" -> "some_table", "keyspace" -> "myks")).load

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 2012-08-05
      • 2020-10-15
      • 2016-09-26
      • 2021-12-09
      • 2018-06-20
      • 2018-01-15
      • 2015-06-29
      • 2015-04-04
      相关资源
      最近更新 更多