テスト対象:
1、データクリーニング:クリーニング洗浄後のデータベースハイブ内のデータ、およびインポートデータに基づいインチ
2 、データ処理:
・トップ10の訪問の統計で最も人気のあるビデオ/記事(ビデオ/記事)
・最も人気のある都市トップ10コースの統計によると(IP)
・トラフィック統計によると、トップ10で最も人気のあるコース(トラフィック)
3 、データ視覚化:統計結果は、注ぎのMySQL データベースをグラフィカルな表示モードを介して展開。
このテストの結果は非常に満足のいくものではない、ハイブは、テストの開始時間が得られ、急いでロードされた長い時間のために遅れて、常に問題となっています。
溶液プロセス:
1.まず、クリーニングのための教師によって提供されたデータは、我々は画像で見ることができます
音符にデータ点を抽出する画像にマークされている:1、スペースの後ろに分割シンボルコンマ、修正すべき2時間形式必要、コース番号3としたときに削除される必要があります。
だから我々は、プロセスマップ、完全な抽出では、これら3つのことを解決することを決めました。
パブリック クラスマップ延びマッパー<オブジェクト、テキスト、テキスト、NullWritable> // 値が入力されたキーは、出力データにコピーされ、直接出力地図 { 公共 ボイドマップ(オブジェクトキーは、テキスト値、コンテキスト・コンテキスト)がスローIOExceptionが、 InterruptedExceptionある // マップ機能を実現 { // 取得し、各処理手順出力 列ライン= value.toStringを(); 文字列ARR [] = line.split( "" ); // 抽出日付 列OLDDATA = ARR [1 ]; 文字列DataTemp [] = oldData.split( "/"); IF(DataTemp .equals( "-NOV" [1] )){ DataTemp [ = "11" 1] ; } 他{ DataTemp [ 1] =" 1" ; // ファイルに加えて、月のない月したがって、他の場合は省略する } 列dataYear = DataTemp [2] .substring(0,4 ); 文字列dataTime = DataTemp [2] .substring(5,13 ); 文字列あるnewData = dataYear + " - " + DataTemp [1] + " - " + DataTemp [0] + "" + dataTime; // トラフィック ストリングトラフィックARR = .replace [3]( ""、 "" ); // メディアタイプ 文字列型ARR = [4 ]。 // IDの 文字列ID = ARR [5 ]。 // 整合キー // 文字列の総和= "IP:" + ARR [0] + "日付: "+あるnewData +"、日: "+ ARR [2] +"、traffice: "+交通+"、種類:" +タイプ+ "ID:" + ID; ストリング和= ARR [0] + " "+あるnewData +"、 "+ ARR [2] +"、 "+交通+"、 "+型+"、" + ID。 // 只填写キー值、値值使用nullwrite类型代替 context.write(新しいテキスト(合計)、NullWritable.get()); } }
そして、HDFSで抽出された結果を表示します。それは、要件を満たしています
そして、HDFSでのハイブにファイルをインポートするために、ハイブを開きます。まず、適切なテーブルを作成する必要があります。
(インポートプロセスでは、ファイルは削除ため、HDFSになります)import文を使用して:LOAD DATA INPATH '/user/SuperMan/input/newresult.txt' INTO TABLE test1113 PARTITION(CREATE_TIME = '2019年11月13日' );
表示結果:
あなたはハイブにインポートされている見ることができます。