![](/img/trans.png)
[英]External command s3-dist-cp execution in spark-scala through scala.sys.process API
[英]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.