我是火花和卡桑德拉的新手。我正在尝试使用 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 连接器进行插入操作?