我们能否使用多个sparksessions从两个不同的hive2服务器访问表

时间:2017-07-04 05:25:28

标签: hadoop apache-spark hive

我们能否使用两个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。

谢谢

1 个答案:

答案 0 :(得分:0)

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

SparkSession.clearActiveSession()
SparkSession.clearDefaultSession()

清除会话后,我们可以使用不同的值重新分配。