从synapse中的Spark作业访问数据库

gajydyqb  于 2023-08-06  发布在  Apache
关注(0)|答案(1)|浏览(157)

我在一个 *Synapse工作空间 * 中工作。
我在专用网络(10.x.x.x)中有一个指向Oracle数据库的 * 链接服务 *


的数据
我有一个 SparkJob,它试图用Oracle瘦客户端和spark库中的默认方法连接到该数据库,即 * spark.read.jdbc *,它不能到达它。



spark job是否有可能到达数据库?
我尝试打开防火墙连接,但无法找到从哪里到哪里,因为 *Spark池 * 在一个虚拟网络中,我不知道该网段。

3phpmpom

3phpmpom1#

为了使用Synapse Notebook中的Pyspark从Oracle DB读取数据,以下步骤将帮助您:
步骤1:将jar ojdbc 8 - 19.15.0.0.1.jar添加到Synapse工作区包中。
步骤2:将workspace package添加到ApacheSpark池
步骤3:执行以下代码:

host = 'my_host_url'  
port = 1521  
service_name = 'my_service_name'  
jdbcUrl = f'jdbc:oracle:thin:@{host}:{port}:{service_name}'  
    sql = 'SELECT * FROM my_table'  
    user = 'my_username'  
    password = 'my_password'  
    jdbcDriver = 'oracle.jdbc.driver.OracleDriver'  
    jdbcDF = spark.read.format('jdbc') \  
        .option('url', jdbcUrl) \  
        .option('query', sql) \  
        .option('user', user) \  
        .option('password', password) \  
        .option('driver', jdbcDriver) \  
        .load()  
    display(jdbcDF)

字符串
按照上面的步骤,你可以在spark notebook中从oracle db中读取数据。

相关问题