Jestem nowicjuszem do iskrzenia i kassandra. Próbuję wstawić do tabeli Cassandra za pomocą łącznika zapłonem Cassandra jak poniżej:Wykonanie wkładki Cassandra przy użyciu złącza iskrobassandra
import java.util.UUID
import org.apache.spark.{SparkContext, SparkConf}
import org.joda.time.DateTime
import com.datastax.spark.connector._
case class TestEntity(id:UUID, category:String, name:String,value:Double, createDate:DateTime, tag:Long)
object SparkConnectorContext {
val conf = new SparkConf(true).setMaster("local")
.set("spark.cassandra.connection.host", "192.168.xxx.xxx")
val sc = new SparkContext(conf)
}
object TestRepo {
def insertList(list: List[TestEntity]) = {
SparkConnectorContext.sc.parallelize(list).saveToCassandra("testKeySpace", "testColumnFamily")
}
}
object TestApp extends App {
val start = System.currentTimeMillis()
TestRepo.insertList(Utility.generateRandomData())
val end = System.currentTimeMillis()
val timeDiff = end-start
println("Difference (in millis)= "+timeDiff)
}
kiedy wstawić przy użyciu powyższej metody (listę 100 podmiotów), trwa 300-1100 milliseconds
. Próbowałem te same dane do wstawienia przy użyciu biblioteki phantom. Zajmuje to mniej niż 20-40 milliseconds
.
Czy ktoś może mi powiedzieć, dlaczego złącze świecowe zajmuje tyle czasu na wstawienie? Czy robię cokolwiek złego w moim kodzie lub czy nie zaleca się używania spark-cassandra connector dla operacji wstawiania?
Ile masz węzłów Cassandra? Czy twoi iskrowcy działają na węzłach Cassandra? Nie widzę żadnych pomiarów czasu w kodzie, więc wygląda na to, że mierzysz o wiele więcej operacji niż tylko czas wstawiania. –
Właśnie zacząłem z Kasandra i iskrą. Używam lokalnej iskry. Ale Kasandra znajduje się w innej maszynie, ale w tej samej sieci. Jeśli chodzi o pomiar czasu, zredagowałem kod. –
@YaduKrishnan Spark rozprasza operacje w całej sieci, podczas gdy phantom jest wykonywany bezpośrednio zapisuje parallelised na JVM poprzez klasyczne wielowątkowość. Jest także znacznie szybszy w mapowaniu danych, ponieważ większość magii to czas kompilacji, nie ma boksa wykonawczego, ponieważ wszystkie konwersje są wyspecjalizowane, złącze iskrzenia tak naprawdę nie dotyka bitów Scala. – flavian