Spark-ftp:DataFrame被错误地保存到FTP

时间:2018-02-08 16:03:30

标签: apache-spark dataframe apache-spark-sql

我正在与spark-ftp挣扎,我正在从oracle DB读取,然后想要将输出数据(从dataframe)写入FTP。一切都很好,但为什么要复制一个名为1part-XXX..csv.crc而不是.csv的文件?

以下是代码:

val jdbcSqlConnStr = "jdbc:oracle:thin://@Server:1601/WW"

val jdbcDbTable = "(select CAST(ID as INT) Program_ID, Program_name from 
 PROGRAM WHERE ROWNUM <=100) P"

val jdbcDF = sqlContext.read.format("jdbc").options(    
Map("url" -> jdbcSqlConnStr,
"dbtable" -> jdbcDbTable,
"driver" -> "oracle.jdbc.driver.OracleDriver",    
"user" -> "user",
"password" ->  "pass"    
)).load

jdbcDF.write.
  format("com.springml.spark.sftp").
  option("host", "ftp.Server.com").
  option("username", "user").
  option("password", "*****").
  option("fileType", "csv").
  option("delimiter", "|").
  save("/Test/sample.csv")

但上传到FTP的输出文件是二进制文件,我在控制台输出中找到了它:

  

8/02/08 17:08:43 INFO FileOutputCommitter:保存任务的输出
  'attempt_20180208170840_0000_m_000000_0'到
  文件:/ C:/用户/ aarafeh /应用程序数据/本地/温度/ spark_sftp_connection_temp286 / _tempor   ary / 0 / task_20180208170840_0000_m_000000 18/02/08 17:08:43 INFO   SparkHadoopMapRedUtil:attempt_20180208170840_0000_m_000000_0:   承诺18/02/08 17:08:43 INFO执行官:在舞台上完成任务0.0   0.0(TID 0)。 1565字节结果发送到驱动程序18/02/08 17:08:43 INFO TaskSetManager:完成任务0.0在阶段0.0(TID 0)中3591毫秒   localhost(执行者驱动程序)(1/1)18/02/08 17:08:43信息   TaskSchedulerImpl:删除了TaskSet 0.0,其任务包含所有   完成,来自游泳池18/02/08 17:08:43 INFO DAGScheduler:ResultStage   0(在DefaultSource.scala的csv:243)在3.611 s 18/02/08完成   17:08:43 INFO DAGScheduler:作业0完成:csv在
  DefaultSource.scala:243,花了3.814856 s 18/02/08 17:08:44 INFO   FileFormatWriter:作业null已提交。 18/02/08 17:08:44信息   DefaultSource:复制
  C:\用户\ aarafeh \应用程序数据\本地的\ Temp \ spark_sftp_connection_temp286.part-00000-   1efdd0f1-8201-49b4-af15-5878204e57ea-c000.csv.crc to
  /J28446_Engage/Test/sample.csv
   18/02/08 17:08:46 INFO SFTPClient:从C:\ Users \ aarafeh \ AppData \ Local \ Temp \ spark_sftp_connection_temp286.part-00000-复制文件   1efdd0f1-8201-49b4-af15-5878204e57ea-c000.csv.crc to
  /J28446_Engage/Test/sample.csv
18/02/08 17:08:47 INFO SFTPClient:   成功复制文件...

文件已成功上传(sample.csv),但由于上传了crc文件,因此它是二进制文件。

知道为什么以及如何解决?

1 个答案:

答案 0 :(得分:0)

我将此升级为Spark-ftp项目下的问题,如下所示:

https://github.com/springml/spark-sftp/issues/18

他们修好了。

感谢。