我们需要从 DBX 传输多个 JSON 文件(例如 abfss://@.dfs.core.windows.net/folder1/json_files)通过 SFTP。
是否有任何示例代码/笔记本以及我们可以遵循的指导方针来完成此任务?
厌倦了下面的代码:
df.write.format("com.springml.spark.sftp").\
option("host", hostname).\
option("username", "user").\
option("password", "password").\
option("fileType", "json").\
save("/ftp/files/sample.json")
并收到此错误:
java.lang.NoSuchMethodError: scala.Predef$.refArrayOps([Ljava/lang/Object;)Lscala/collection/mutable/ArrayOps;
您可以使用
Spark File Transfer Library
来传输文件。
com.github.arcizon:spark-filetransfer_2.12:0.3.0
为 scala 2.12
首先,在您的集群中安装这个库。
使用此库,您可以读取和写入不同文件格式的数据帧。 下面是读取文本文件的示例。
df_txt = spark.read \
.format("filetransfer") \
.option("protocol", "sftp") \
.option("host", host) \
.option("port", "22") \
.option("username", username) \
.option("password", password) \
.option("fileFormat", "text") \
.load("/pub/example/readme.txt")
display(df_txt)
同样,您可以向
sftp
写入数据,如下所示。
df = spark.read.json(adls_path)
df.write \
.format("filetransfer") \
.option("protocol", "sftp") \
.option("host", host) \
.option("port", "22") \
.option("username", username) \
.option("password", password) \
.option("fileFormat", "json") \
.save("data/upload/output/sample.json")
有关更多信息,请参阅 this GitHub 存储库。