簡體   English   中英

如何將s3 / Hdfs中的文件附加到Spark-Scala中的電子郵件?

[英]How do I attach file from s3/Hdfs to an email in Spark-Scala?

我必須將spark DataFrame導出到文件(在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作為電子郵件附件的問題)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM