ScalaはファイルをMD 5(ローカルおよびhdfs)に変換

8658 ワード

@羲凡——もっとよく生きるためだけに
ScalaはファイルをMD 5(ローカルおよびhdfs)に変換
最近のビジネスでは、処理されたファイルをMD 5に生成し、次のサービスで一意性チェックを行う必要があります.ネット上でブログを見つけてとても役に立ちました.私は少し簡略化して、持って行ってお礼を言いません.元ブロガーの記事を見たらここをクリックhttps://blog.csdn.net/cjuexuan/article/details/50901244元ブロガーを尊重し、感謝します.次のバイトのコード:
package csdn

import java.io.{File, FileInputStream}
import org.apache.commons.codec.digest.DigestUtils
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FSDataInputStream, FileSystem, Path}
import scala.util.{Failure, Success, Try}

object SparkFileToMD5 {
  def main(args: Array[String]): Unit = {
    //hdfs    
    val path = "/aarontest/data/oozie/sparkshell/wc.txt"
    //      
    val file = "D:\\AaronProject\\SparkTest227\\data\\wc.txt"
    // hdfs      MD5
    def getHdfsFileMd5(path: String): String = {
      val hdfs: FileSystem = FileSystem.get(new Configuration())
      val in: FSDataInputStream = hdfs.open(new Path(path))
      Try {
        DigestUtils.md5Hex(in)
      } match {
        case Success(s) ⇒ in.close(); hdfs.close(); s
        case Failure(e) ⇒ in.close(); hdfs.close(); e.getMessage
      }
    }
    //        MD5
    def getLocalFileMd5(file: String): String = {
      val in = new FileInputStream((new File(file)))
      Try {
        DigestUtils.md5Hex(in)
      } match {
        case Success(s) ⇒ in.close(); s
        case Failure(e) ⇒ in.close(); e.getMessage
      }
    }
    println("hdfs    : " + getHdfsFileMd5(path))
    println("      : " + getLocalFileMd5(file))
  }
}

結果:
hdfs    : 88988f8d939db7005d324cdd1f93d79f
      : 88988f8d939db7005d324cdd1f93d79f

====================================================================
@羲凡——もっとよく生きるためだけに
ブログに何か問題があれば、メッセージ交換を歓迎します.