2017-05-24 8 views
0

ファイルをHDFSから電子メールMimeBodyPartに添付する方法が見つかりません。 ここまでは私の試みです。 FileDataSourceとURLDataSourceの両方を使用しようとしましたが、運はありませんでした。HDFSからjavax.mailメールにファイルを添付

val attachmentPart = new MimeBodyPart() 
val filePath = "FILE_PATH" 
val fileName = s"FILE_NAME_${date}.html" 

val fs = FileSystem.get(sctx.hadoopConfiguration) 
val fullURL = fs.getFileStatus(new Path(filePath+fileName)).getPath.toUri.toURL 
//val fullFilePath = fs.getFileStatus(new Path(filePath+fileName)).getPath.toString 

val source = new URLDataSource(fullURL) 
//val source = new FileDataSource(fullFilePath) 
attachmentPart.setDataHandler(new DataHandler(source)) 
attachmentPart.setFileName("file name") 

私はURLDataSourceの場合には、次のエラーを取得しています:

Exception in thread "main" java.net.MalformedURLException: unknown protocol: hdfs 
+0

は が '輸入org.apache.hadoop.fs.FsUrlStreamHandlerFactory URL.setURLStreamHandlerFactoryは(新しいFsUrlStreamHandlerFactory())' @ –

答えて

0

は、スキーマHDFSとURLを処理するためのHadoopのFsUrlStreamHandlerFactoryを登録してみてください。

import org.apache.hadoop.fs.FsUrlStreamHandlerFactory 
import java.net.URL 
URL.setURLStreamHandlerFactory(new FsUrlStreamHandlerFactory()) 
+0

おかげルージュ-1、それが働いたのHadoop FsUrlStreamHandlerFactoryハンドラを登録してみてください。 –

関連する問題