結果ファイルのデータの説明:
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;
輸入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;
輸入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;
輸入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返します。
}
パブリック文字列[]構文解析(文字列線){
文字列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();
}
解析を返します。
}
}
に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();
}
解析を返します。
}
}