我们正在尝试通过 Apache Spark 将数据从 Oracle 数据库导入 Kinetica 数据库。
我们以独立模式安装了 Spark。我们执行了以下命令。但是,我们已经尝试了所有方法,但无法并行运行作业。我们使用 2 台 IBM 服务器,每台服务器都有 128 个内核和 1TB 内存。
我们还在 spark-defaults.conf 中添加了:
spark.executor.memory=64g
spark.executor.cores=32
spark.default.parallelism=32
spark.cores.max=64
spark.scheduler.mode=FAIR
spark.sql.shuffle.partions=32
在机器上:10.20.10.228
./start-master.sh --webui-port 8585
./start-slave.sh --webui-port 8586 spark://10.20.10.228:7077
在机器 10.20.10.229 上:
./start-slave.sh --webui-port 8586 spark://10.20.10.228:7077
在机器上:10.20.10.228:
我们启动 Spark shell:
spark-shell --master spark://10.20.10.228:7077
然后我们进行配置:
val df = spark.read.format("jdbc").option
("url", "jdbc:sqlserver://10.20.10.148:1433;databaseName=testdb").option
("dbtable", "dbo.temp_muh_hareket").option("user", "gpudb").option
("password", "Kinetica2017!").load()
import com.kinetica.spark._
val lp = new LoaderParams("http://10.20.10.228:9191", "jdbc:simba://10.20.10.228:9292;ParentSet=MASTE
R", "muh_hareket_20",
false,"",100000,true,true,"admin","Kinetica2017!",4, true, true, 1)
SparkKineticaLoader.KineticaWriter(df,lp);
上述命令成功运行。数据传输完成。但是,作业是串行而不是并行工作的。执行者也连续工作并轮流工作。他们不并行工作。
我们如何使工作并行工作?
我真的很感谢你的帮助。我们已经做了我们能做的一切。