我正在努力使用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:/ Users / aarafeh / AppData / Local / Temp / 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:Committed 18/02/08 17:08:43 INFO Executor:在阶段0.0(TID 0)完成任务0.0 . 1565字节结果发送到驱动程序18/02/08 17:08:43 INFO TaskSetManager:在本地主机(执行程序驱动程序)(1/1)上的3591毫秒的阶段0.0(TID 0)中完成任务0.0 18/02/08 17: 08:43 INFO TaskSchedulerImpl:删除任务集0.0,其任务已全部完成,来自池18/02/08 17:08:43 INFO DAGScheduler:ResultStage 0(csv at DefaultSource.scala:243)在3.611 s完成18/02 / 02 / 08 17:08:43 INFO DAGScheduler:作业0完成:csv在DefaultSource.scala:243,花了3.814856 s 18/02/08 17:08:44 INFO FileFormatWriter:Job null committed . 18/02/08 17:08:44 INFO DefaultSource:将C:\ Users \ aarafeh \ AppData \ Local \ Temp \ spark_sftp_connection_temp286.part-00000- 1efdd0f1-8201-49b4-af15-5878204e57ea-c000.csv.crc复制到/ 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文件 .
知道为什么以及如何解决?