我们能否使用两个如下所示的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")

还是有任何可能的方式,我们可以使用多个sparksession访问两个不同的数据库表(例如mysql-hive)进行比较。

谢谢

最佳答案

最终,我找到了有关如何使用多个SparkSession的解决方案,该解决方案通过以下方式实现:

SparkSession.clearActiveSession()
SparkSession.clearDefaultSession()

清除 session 后,我们可以用不同的值重新分配它。

关于hadoop - 我们能否使用多个sparksession从两个不同的hive2服务器访问表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44897574/

10-15 22:19