如何将文件从 s3/Hdfs 附加到 Spark-Scala 中的电子邮件中



我必须将火花数据帧导出到文件(在S3/HDFS上(,然后将文件作为电子邮件附件发送。

在 scala 中执行此操作的最简单方法是什么?

我尝试查看javax.activation.mail,但我无法弄清楚如何从S3/HDFS上的文件中获取数据源

  messageBodyPart = new MimeBodyPart()
  val source: FileDataSource = new FileDataSource(pathToAttachment)
  messageBodyPart.setDataHandler(new DataHandler(source))
  messageBodyPart.setFileName(pathToAttachment)
  multipart.addBodyPart(messageBodyPart)

您没有提供足够的信息(火花版本、数据大小、附件文件类型......

假设您正在使用Java Mail API、Spark 1.6和HDFS,并且希望将CSV作为附件发送。

首先保存您的DF

DF.coalesce(1).write.mode("overwrite").format("com.databricks.spark.csv").option("header", "true").save("/pathToFolder/")
val filePath = "/pathToFolder/part-xxxx"

从 HDFS 加载

namenode = "hdfs://..."
val hdfs = FileSystem.get(new URI(namenode), new Configuration())
val path = new Path(filePath)
val stream = hdfs.open(path)
val fileName = "mydata.csv"

设置附件

messageBodyPart = new MimeBodyPart()
messageBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(stream,"text/csv")))
messageBodyPart.setFileName(fileName)
multipart.addBodyPart(messageBodyPart)

重要提示:这是 Spark 1.6小型数据集的示例(因为这是将 DF 作为电子邮件附件发送的问题(

最新更新