我正在尝试使用通过JDBC到BigQuery
模板的JDBC使用Google的数据流,以将信息从Salesforce
提取到BigQuery
中。我正在使用的JDBC驱动程序是Progress' DataDirect JDBC Driver for Salesforce。
我已经确认可以使用本地驱动程序连接到Salesforce。
不幸的是,当我使用驱动程序在数据流中创建作业时,出现以下异常:
java.lang.RuntimeException:org.apache.beam.sdk.util.UserCodeException:java.sql.SQLException:无法获得连接,池错误无法激活对象
如果需要,我可以提供堆栈跟踪。
我已经如下配置了模板(其中<>中的值已适当设置):
Regional endpoint: us-central1
JDBC connection URL string: jdbc:datadirect:sforce://path.to.salesforce.com;SecurityToken=<Security Token>;User=<User>;Password=<Password>
JDBC driver class name: com.ddtek.jdbc.sforce.SForceDriver
JDBC source SQL query: SELECT Email FROM LEAD;
BigQuery output table: <project>:<dataset>.<table_name>
GCS paths for JDBC drivers: gs://<some_bucket>/sforce.jar
Temporary directory for BigQuery loading process: gs://<some_bucket>/staging
Temporary location: gs://<some_bucket>/tmp
我希望熟悉此用例的人能够帮助我确定为什么收到此异常以及如何解决该异常。我的工作假设是我没有正确使用驱动程序,我需要向GCS添加其他驱动程序,或者存在通过Dataflow连接到Salesforce的问题。
编辑:
我正在使用的来自Progress的JDBC驱动程序是6.0版。我不确定在使用UI时会使用哪个版本的Dataflow SDK,但是当我尝试在本地使用Google Dataflow SDK时,似乎正在使用基于pom.xml的2.5.0版本。
我在JDBC和Dataflow版本之间没有发现任何相关问题,因此,我建议您查看Progress网站上的以下教程,以了解您是否正确使用了驱动程序:
并且如果异常仍然存在,请在此guide之后创建与GCP有关的问题>