教室のテスト - データクレンジング

結果ファイルのデータの説明:

IP 106.39.41.166、 都市)

DATE 10/11月/ 2016:00:01:02 0800、 日付)

デイ10、 日数)

交通:54は、ある(トラフィック)

タイプ:ビデオ、(種類:ビデオの映像や記事のArticleこの記事でした

上記ID:8701 (ビデオ又は物品言及ID上記

テスト要件:

1、  データクリーニング:クリーニングデータに応じて、インポートデータ洗浄ハイブのデータリポジトリ

二段データクリーニング:

1 )第1段階:必要な情報は、元のログから抽出され

IP:199.30.25.88

時間:10/11月/ 2016:00:01:03 0800

交通:62

記事: Articleこの記事は、/ 11325でした

ビデオ:ビデオ/ 3235

2 )第二段階:から抽出された情報に基づいて細かい操作を行います

IP ---> の市IP

日付 - >時間:2016年11月10日夜12時01分03秒

日:10

交通:62

タイプ:記事/ビデオ

ID:11325

3 ハイブデータベーステーブル構造

テーブルデータを作成する(IP列、時間文字列、日文字列、交通BIGINT、

文字列型、id文字列)

 

第一段階の結果は、

 

第二段階

第二段階は、現在の問題のいくつかは、コードの唯一の完成部分です

コードの十二段部

インポートにjava.io.IOException;
輸入java.sql.Date;
輸入java.text.SimpleDateFormatの。
インポートたjava.util.Locale;
輸入java.util.StringTokenizer;
輸入javax.xml.bind.helpers.ParseConversionEventImpl;
輸入org.omg.CORBA.PUBLIC_MEMBER;
輸入com.sun.org.apache.bcel.internal.generic.RETURN;
輸入com.sun.org.apache.xerces.internal.impl.xs.identity.FieldActivator。
輸入com.sun.org.apache.xerces.internal.impl.xs.identity.Selector.Matcher;
輸入com.sun.org.apache.xerces.internal.impl.xs.identity.Selector.XPath。
輸入com.sun.xml.internal.bind.CycleRecoverable.Context;
輸入com.sun.xml.internal.bind.Locatable;
輸入com.sun.xml.internal.ws.config.management.policy.ManagementPrefixMapper;
輸入com.sun.xml.internal.ws.policy.privateutil.PolicyUtils.Text;
輸入javafx.scene.chart.PieChart.Data;
輸入javafx.scene.shape.Line;
輸入jdk.internal.dynalink.beans.StaticClass;
パブリッククラスNamecount {
 
 パブリック文字列[]構文解析(文字列線){
  文字列IP = parseIp(ライン)
  ストリング時間= parseTime(ライン)
  文字列日= parseDay(ライン)
  ストリングのトラフィック= parseTraffic(ライン)
  文字列型= parseTypeを(ライン)。
  文字列ID = parseId(ライン)
  新しい文字列を返す[] {
    IP、時間、日、トラフィック、タイプ、ID
  }。
 }
   プライベート文字列parseId(列線)
   {
    最終的な文字列のトリム= line.substring(line.lastIndexOf( "\" ")+ 1).trim();
    文字列ID = trim.split("、 ")[1];
    リターンID;
    
    }
   プライベート文字列parseTypeを(列線)
   {
    最終的な文字列のトリム= line.substring(line.lastIndexOf( "\" ")+ 1).trim();
    文字列型= trim.split("、 ")[1];
    戻り型;
   }
   プライベート文字列parseTraffic(文字列ライン)
   {
    最終的な文字列のトリム= line.substring(line.lastIndexOf( "\" ")+ 1).trim();
    ストリングのトラフィック= trim.split( "")[1]。
    トラフィックを返します。
   }
   プライベート文字列parseDay(列線)
   {
    最終的な文字列のトリム= line.substring(line.lastIndexOf( "\" ")+ 1).trim();
    文字列の日= trim.split("、 ")[1];
    リターン日;




  最終INT最後= line.indexOf( "+ 0800]");
     文字列、日付= line.substring(第+ 1、最後).trim();
     文字列の時間= NULL;
 日付日付1 = parseDateFormat(時間);
    dateformat1.format(DATE1)を返します。
}
プライベート文字列parseIp(列線){
 文字列IP = line.split( "")[0] .trim()。
 IP返します。
}
 
 公共ボイドマップ(Locatable内鍵、テキスト値、コンテキストコンテキスト)
    にIOException、InterruptedExceptionある{スロー
     テキストoutputValue =新しいテキストを()。
     列ライン= value.toString()。
     NamecountのAA =新しいNamecount();
     StringTokenizerはtokenizerArticle =新しいStringTokenizerは(行、 "\ n個");
     一方、(tokenizerArticle.hasMoreElements()){
      文字列STRA = tokenizerArticle.nextToken()のtoString()。
      文字列[] NewStrによってすでに= aa.parse(STRA)。
    
     }
    }
  
    のpublic static finalのSimpleDateFormat FORMAT =新しいてSimpleDateFormat( "XX / YYY / NNNN:SS:FF:MM"、Locale.ENGLISH)。
    パブリック静的最終てSimpleDateFormat dateformat1 =新しいてSimpleDateFormat( "NNNN-YYY-XX SS:FF; MM")。
    プライベート日付parseDateFormat(文字列){
     日パース= NULL;
     {しようと
      パース=(日)FORMAT.parse(文字列);
     }キャッチ(例外e){
      e.printStackTrace();
     }
     解析を返します。
    }
}

 

 

 

 

おすすめ

転載: www.cnblogs.com/love-nan/p/11853468.html