gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 11:24:22 25 4
gpt4 key购买 nike

我必须将 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)

最佳答案

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

假设您正在使用 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)

关于java - 如何将 s3/Hdfs 中的文件附加到 Spark-Scala 中的电子邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49714871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com