我正在与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文件,因此它是二进制文件。
知道为什么以及如何解决?
答案 0 :(得分:0)