2015-09-25 3 views
0

я имею успех и прочитать Кассандру от искры, используя следующий синтаксис:Как агрегат по значению в Apache Spark

val rddSelect = sc.cassandraTable("keyspace", "nametable").select("column1", "column2").take(100) 

мне нужно сделать совокупную группу по column1 и COLUMN2 в искре

я попробовал groupbykey и Другие преобразования, но это ошибка:

value reduceByKey is not a member of Array[com.datastax.spark.connector.CassandraRow] 

может быть, кто-нибудь может дать мне ключ, ТНХ

NB: я использую Scala

+0

Это массив, а не карту, поэтому он не имеет ключи, и не имеет методов xxxByKey. попробуйте просто 'groupBy' – Shadowlands

+0

Привет @Shadowlands, если я хочу использовать reduceByKey или что-нибудь по ключу, я должен использовать карту раньше, не так ли? – ihsansat

+0

@Shadowlands 'вал а = rddSelect.map (т => (т, 1)) вал б = a.reduceByKey ((к, v) => v + 1)' – ihsansat

ответ

0

Вы можете сделать, как это -

val modifiedRDD = rddSelect.toJavaRDD.rdd 
    .map { x => 
    { 

     val temp = x.get(0).toString().split(",") 
     (temp(0), temp(1)) 
    } 
    } 

modifiedRDD.groupBy(func) 
modifiedRDD.reduceByKey(func) 
Смежные вопросы