我们能否使用两个SparkSession(如下所示)从两个不同的hive2服务器访问表:
val spark = SparkSession.builder().master("local")
.appName("spark remote")
.config("javax.jdo.option.ConnectionURL", "jdbc:mysql://192.168.175.160:3306/metastore?useSSL=false")
.config("javax.jdo.option.ConnectionUserName", "hiveroot")
.config("javax.jdo.option.ConnectionPassword", "hivepassword")
.config("hive.exec.scratchdir", "/tmp/hive/${user.name}")
.config("hive.metastore.uris", "thrift://192.168.175.160:9083")
.enableHiveSupport()
.getOrCreate()
val sparkdestination = SparkSession.builder().master("local") .appName("spark remote2")
.config("javax.jdo.option.ConnectionURL", "jdbc:mysql://192.168.175.42:3306/metastore?useSSL=false")
.config("javax.jdo.option.ConnectionUserName", "hiveroot")
.config("javax.jdo.option.ConnectionPassword", "hivepassword")
.config("hive.exec.scratchdir", "/tmp/hive/${user.name}")
.config("hive.metastore.uris", "thrift://192.168.175.42:9083")
.enableHiveSupport()
.getOrCreate()
import spark.implicits._
import spark.sql
val source = spark.sql("SELECT * from sample.source limit 20")
import sparkdestination.implicits._
import sparkdestination.sql
val destination = sparkdestination.sql("select * from sample.destination limit 20")
或者是否有任何可能的方法可以使用多个sparksessions访问两个不同的数据库表,例如mysql-hive
进行comaparison。
谢谢
答案 0 :(得分:0)
最后,我找到了关于如何使用多个SparkSession的解决方案,它通过以下方式实现:
SparkSession.clearActiveSession()
SparkSession.clearDefaultSession()
清除会话后,我们可以使用不同的值重新分配。