Я новичок в Spark и Cassandra. Я пытаюсь вставить в таблицу cassandra, используя разъем Spark-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
. Я пробовал вставить те же данные с помощью библиотеки phantom. Это займет меньше, чем 20-40 milliseconds
.
Может ли кто-нибудь сказать мне, почему разъем свечи так долго вставляется? Я делаю что-то не так в своем коде или не рекомендуется использовать коннектор spark-cassandra для операций вставки?