当前位置: 首页 > 知识库问答 >
问题:

spark-salesforce连接器中的Null类型架构

元修然
2023-03-14

我有一个数据集 ,其中包含从Salesforce导入的48列:

Dataset<Row> df = spark.read()
  .format("com.springml.spark.salesforce")
  .option("username", prop.getProperty("salesforce_user"))
  .option("password", prop.getProperty("salesforce_auth"))
  .option("login", prop.getProperty("salesforce_login_url"))
  .option("soql", "SELECT "+srcCols+" from "+tableNm)
  .option("version", prop.getProperty("salesforce_version"))
  .load()
finalDS.coalesce(1).write().option("delimiter", "^").toString().text(hdfsExportLoaction);
Exception in thread "main" org.apache.spark.sql.AnalysisException: Try to map struct<Columns....>to Tuple1, but failed as the number of fields does not line up.;
        at org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveDeserializer$.org$apache$spark$sql$catalyst$analysis$Analyzer$ResolveDeserializer$$fail(Analyzer.scala:2320)
finalDS.map(row -> row.mkString(), Encoders.STRING()).write().option("delimiter", "^").text(hdfsExportLoaction);
finalDS.coalesce(1).write().mode(SaveMode.Overwrite).option("header", "true").option("delimiter", "^").option("nullValue", "").csv(hdfsExportLoaction+"/"+tableNm);
finalDS.na().fill("").coalesce(1).write().option("delimiter", "^").mode(SaveMode.Overwrite).csv(hdfsExportLoaction);
Exception in thread "main" java.lang.UnsupportedOperationException: CSV data source does not support null data type.


当试图以文本文件的形式写入时,可能会删除分隔符,或者只能将单个列写入文本文件的错误,
当试图以CSV的形式写入时,则不支持Null数据类型异常。

共有1个答案

谢唯
2023-03-14

我认为您的数据集或数据表本身有问题。对我来说

df.coalesce(1).write.option("delimiter", "^").mode(SaveMode.Overwrite).csv("<path>")

这和预期的一样。它正确地用“^”分隔。我建议检查您的dataframe或DataSet的数据以及您正在对其进行的操作。在写入数据之前,使用一次df.count并查看其失败与否

 类似资料:
  • JavaSpark框架使用嵌入式Jetty作为Web服务器。Jetty支持HikariCP等工具的连池,并在XML文件中提供配置选项。然而,根据这些帖子,Spark确实允许配置Jetty。有很多使用Spark的例子,但是它们要么不使用数据库,要么使用DriverManager连接到数据库。 是否可以通过Spark中的datasource和JNDI配置连接池?如果是,怎么做?

  • 收到以下错误当我尝试连接到Salesforce时,我遗漏了什么重要的东西吗? //TID[-1234][EI][2019-03-19 20:40:40,174]错误{org.apache.axis2.description.clientutils}-系统无法从/services/createsfbuzz URL推断传输信息。 //tid[-1234][EI][2019-03-19 20:40:40

  • **dataframe2:从另一个来源获得的键的Dataframe(这些键是上表中ID列的分区键)-此表中不同键的数量约为0.15万** 现在,此代码总是导致“com.datastax.oss.driver.api.core.servererrors.ReadFailureException:在一致性LOCAL_ONE读取查询期间Cassandra失败(需要1个响应,但只有0个副本响应,1个失败)

  • 注意,这里是每个cassandra分区的限制,而不是每个spark分区的限制(连接器中现有的限制函数支持这一点)。 spark 2.0.1,连接器-2.0.0-M3

  • 大家好, 我正在尝试为我帮助编写的触发器编写一个测试类。触发器使用名为trigger\u help\u c的字段,该字段是通过添加opportunity Type和Account ID派生的公式字段,如果在过去90天内已在该帐户上创建了该类型的opportunity,则在插入之前激发。除非配置文件是系统管理员。这是我的触发器: 我在写测试课时遇到了困难,我像往常一样不知所措。我写了以下内容,但我不

  • 现在我已经在本地安装了cassndra,并从https://spark-packages.org/package/datastax/spark-cassandra-connector下载了spark-cassandra-connector2.10-1.6.2.jar 如果我下载了错误版本的连接器或有其他问题,有人可以帮助我吗?