通过 SFTP 从 Databricks 传输 json 文件

问题描述 投票:0回答:1

我们需要从 DBX 传输多个 JSON 文件(例如 abfss://@.dfs.core.windows.net/folder1/json_files)通过 SFTP

是否有任何示例代码/笔记本以及我们可以遵循的指导方针来完成此任务?

  • 在集群库中添加了此 jar - com.springml:spark-sftp_2.11:1.1.3
  • 集群运行时 - 13.1(包括 Apache Spark 3.4.0、Scala 2.12)

厌倦了下面的代码:

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;
databricks sftp azure-databricks
1个回答
0
投票

您可以使用

Spark File Transfer Library
来传输文件。
com.github.arcizon:spark-filetransfer_2.12:0.3.0
scala 2.12
首先,在您的集群中安装这个库。

enter image description here

使用此库,您可以读取和写入不同文件格式的数据帧。 下面是读取文本文件的示例。

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)

enter image description here

同样,您可以向

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 存储库。

© www.soinside.com 2019 - 2024. All rights reserved.