私はスパークとカサンドラの初心者です。以下のように、spark-cassandra コネクタを使用して cassandra テーブルに挿入しようとしています。
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)
}
上記の方法(100個のエンティティを含むリスト)を使用して挿入すると、300-1100 milliseconds
. ファントムライブラリを使用して同じデータを挿入しようとしました。未満しかかかっていません20-40 milliseconds
。
スパークコネクタの挿入にこれほど時間がかかる理由を誰か教えてもらえますか? コードで何か間違ったことをしていますか、それとも挿入操作にspark-cassandra コネクタを使用することはお勧めできませんか?