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