【发布时间】:2017-12-19 09:07:03
【问题描述】:
在使用 jdbc 驱动程序连接时,真正执行了什么以及在哪里执行,例如甲骨文。? 1:我已经启动了一个火花大师
spark-class.cmd org.apache.spark.deploy.master.Master
像这样的工人
spark-class.cmd org.apache.spark.deploy.worker.Worker spark://myip:7077
和火花壳一样
spark-shell --master spark://myip:7077
在spark-defaults.conf我有
spark.driver.extraClassPath = C:/jdbcDrivers/ojdbc8.jar
spark.executor.extraClassPath = C:/jdbcDrivers/ojdbc8.jar
在 spark-env.sh 我有
SPARK_CLASSPATH=C:/jdbcDrivers/ojdbc8.jar
我现在可以在 spark-shell 中对 Oracle 运行查询:
val jdbcDF = spark.read.format("jdbc").option("url","jdbc:oracle:thin:@...
无需在 scala shell 中单独添加 jdbc 驱动程序 jar 即可正常工作。
-
当我以相同的方式启动master和worker,但是在eclipse中创建一个scala项目并连接到master时如下:
val sparkSession = SparkSession.builder. master("spark://myip:7077") .appName("SparkTestApp") .config("spark.jars", "C:\\pathToJdbc\\ojdbc8.jar") .getOrCreate()
如果我没有在 scala 代码中明确添加 jdbc jar,它将失败。 执行方式有何不同?为什么我需要在代码中指定jdbc jar?如果不依赖master和worker启动,连接master的目的是什么? 如果我将多个工作人员与 jdbc 一起使用,他们会只使用一个连接还是会同时通过多个连接并行读取?
【问题讨论】:
标签: windows scala apache-spark jdbc apache-spark-sql