【问题标题】:Error when trying to load data from Data Fusion to Salesforce尝试将数据从 Data Fusion 加载到 Salesforce 时出错
【发布时间】:2020-09-03 13:40:48
【问题描述】:

尝试将数据从 Data Fusion 加载到 Salesforce 时出现此错误:

java.lang.RuntimeException: There was issue communicating with Salesforce
    at io.cdap.plugin.salesforce.plugin.sink.batch.SalesforceOutputFormat.getRecordWriter(SalesforceOutputFormat.java:53) ~[1599122485492-0/:na]
    at org.apache.spark.internal.io.HadoopMapReduceWriteConfigUtil.initWriter(SparkHadoopWriter.scala:350) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.internal.io.SparkHadoopWriter$.org$apache$spark$internal$io$SparkHadoopWriter$$executeTask(SparkHadoopWriter.scala:120) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.internal.io.SparkHadoopWriter$$anonfun$3.apply(SparkHadoopWriter.scala:83) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.internal.io.SparkHadoopWriter$$anonfun$3.apply(SparkHadoopWriter.scala:78) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:87) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.scheduler.Task.run(Task.scala:109) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:345) ~[spark-core_2.11-2.3.4.jar:2.3.4]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_252]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_252]
    at java.lang.Thread.run(Thread.java:748) [na:1.8.0_252]
Caused by: com.sforce.async.AsyncApiException: InvalidJob : Invalid job id: null
    at com.sforce.async.BulkConnection.parseAndThrowException(BulkConnection.java:182) ~[na:na]
    at com.sforce.async.BulkConnection.doHttpGet(BulkConnection.java:753) ~[na:na]
    at com.sforce.async.BulkConnection.getJobStatus(BulkConnection.java:769) ~[na:na]
    at com.sforce.async.BulkConnection.getJobStatus(BulkConnection.java:760) ~[na:na]
    at io.cdap.plugin.salesforce.plugin.sink.batch.SalesforceRecordWriter.<init>(SalesforceRecordWriter.java:69) ~[1599122485492-0/:na]
    at io.cdap.plugin.salesforce.plugin.sink.batch.SalesforceOutputFormat.getRecordWriter(SalesforceOutputFormat.java:51) ~[1599122485492-0/:na]
    ... 10 common frames omitted
2020-09-03 08:41:28,595 - WARN  [task-result-getter-0:o.a.s.ThrowableSerializationWrapper@192] - Task exception could not be deserialized
java.lang.ClassNotFoundException: Class not found in all delegated ClassLoaders: com.sforce.async.AsyncApiException
    at io.cdap.cdap.common.lang.CombineClassLoader.findClass(CombineClassLoader.java:96) ~[na:na]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[na:1.8.0_252]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[na:1.8.0_252]
    at io.cdap.cdap.common.lang.WeakReferenceDelegatorClassLoader.findClass(WeakReferenceDelegatorClassLoader.java:58) ~[na:na] 

这个错误是什么意思?我已确保输入字段与 SObject 定义匹配。

【问题讨论】:

  • "Invalid job id" 听起来像批量 api 作业失败。浏览 trailhead.salesforce.com/en/content/learn/modules/api_basics/… 中的批量 API 概念。检查设置 - >批量...如果作业提交正常,也许有更好的错误消息。成功登陆顺丰了吗?
  • 作业出现在“Monitor Bulk Data Load Jobs”页面,但状态仍为“Open”,没有显示错误信息。
  • 那么可能是Java库有问题? SF 需要文件上传完成的指令(因为你可能已经决定加载多个文件,最多 10K 记录块,SF 无法知道)然后它可以开始处理。在我发布的那个链接中,它被称为“关闭工作”。
  • 感谢您的链接。不过,我没有使用工作台。我使用数据融合管道加载、转换数据,然后使用 Salesforce 接收器发送数据。

标签: salesforce google-cloud-data-fusion


【解决方案1】:

我查看了堆栈跟踪,我想我可能知道问题所在。

mapred.salesforce.job.id 属性未定义,代码执行时会去获取该键的值,由于未定义,作业出错。我认为您需要将 mapred.salesforce.job.id 标志设置为运行时属性。要在 Data Fusion 中执行此操作,请执行以下操作:

  1. 在 Pipeline Studio 中,导航到您要配置的管道的详细信息页面。
  2. 单击“运行”按钮旁边的下拉菜单。
  3. 设置所需的集群属性,在所有属性名称前加上system.profile.properties.。对于我们的例子,我认为名称是 system.profile.properties.mapred:mapred.salesforce.job.id,值是您想用作 ID 的数字

【讨论】:

  • 感谢您的回答。您是否必须为 id 使用特定格式或固定大小?我尝试使用以下运行时参数,但仍然遇到相同的错误。 system.profile.properties.mapred:mapred.salesforce.job.id 123444556781234567
  • 你能把参数作为字符串传入吗?这是获取信息的代码行:String jobId = conf.get(SalesforceSinkConstants.CONFIG_JOB_ID);
  • 我将参数作为字符串传递,它仍然给出上述相同的错误。此外,我可以在日志中看到,即使在运行时参数中传递作业 ID 之前,也会自动创建一个:“Started Salesforce job with jobId='7503O000004ORtCQAW'。”
  • 嘿 Sophie - 我在内部分享了这个问题,我们在 Salesforce 插件中发现了一个错误。感谢您指出了这一点!这是该错误的跟踪链接:issues.cask.co/browse/PLUGIN-406
  • 嘿@SophieSepp - 已为 Hub 上的插件部署了修复程序。现在是 v.1.2.1!
猜你喜欢
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2019-09-29
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多