2016-03-21 24 views
0

Cassandra, bölümlerini katlar halinde gösteriyor, ancak dahili olarak geniş satırlar halinde depolanıyor ve bu, Spark'le verdiğim veriler üzerinde çalışmak istediğim yoldur.Bir Cassandra bölümünün Spark'da geniş bir sıra gibi hissettirmesi nasıl yapılır?

Daha spesifik olmak gerekirse, bir şekilde ya da başka bir Cassandra bölümleri RDD'si veya bunların bir veri çerçevesi olsun.

Sonra bir map operasyonu yapmak istiyorum ve kapatılmasıyla, Böyle bir şey ifade etmek istiyorum: sadece bir fikir, basit bir bölünme vermek

row['parameter1']['value']/len(row['parameter2']['vector_value']) 

sözde kodu ve boyu alarak bir vektör.

Benim tablo nasıl efficiencly bunu yapabilir

create table(
    dataset_name text, 
    parameter  text, 
    value   real, 
    vector_value list<real>, 
    primary key(dataset_name, parameter)); 

olurdu? PySpark ile birlikte.

Sanırım Pandas set_index gibi bir şeye ihtiyacım var.

cevap

1

Mantıksal olarak, RDD groupBy yapmak istediğiniz şey benim gibi görünüyor. RDD groupBy'nin büyük gruplandırma için kötü olduğu söyleniyor, ancak burada bir cassandra bölümünde gruplanıyoruz, bu yüzden bir kıvılcım bölmesinde tutulması gerekiyordu ve bir bölümün tüm sıraları üzerinde olduğu için yerel olarak olması gerekiyordu. aynı düğüm.

Scala'yı Spark'ten Python'dan daha kullanıyorum, o yüzden deneyelim. Ama ben test etmedim. . ((X.dataset_name, (x.parameter, değer, vector_value))) // oluşturmak anahtarı: I

RDD = sc.cassandraTable ('KEYSPACE', 'Tablo') harita (Lambda x öneriyoruz

rdd2 üzerine gruba = sıralanmış (rdd.groupByKey()) // groupByKey döner (anahtar, Adımlayıcı), dolayısıyla listemizi almak

Bak GroupBy/groupByKey fonksiyonları

http://spark.apache.org/docs/latest/api/python/pyspark.html#pyspark.RDD

şekilde sıralanır

Her partiti bir satır alacak her bölümün üzerinde ve içinde kümeleme satırlarının bir listesi. böylece ile erişmek mümkün olmalıdır [0] İlk oluşumu o zaman 'parametre1', [1] 'parametre2' için

DÜZENLEME: Bir meslektaşım kıvılcım-cassandra-konnektör ne yapmak RDD yöntemler sağlar söyledi sen istemek, yani kümeleme sütun gruplamasını ve siparişi korumak. Bunlar spanBy/spanByKey olarak adlandırılır: https://github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.md#grouping-rows-by-partition-key