大數據(2):基於sogou.500w.utf8數據hive的實踐

来源:http://www.cnblogs.com/tongkey/archive/2017/11/19/7860785.html
-Advertisement-
Play Games

一.環境的搭建 1.安裝配置mysql rpm –ivh MySQL-server-5.6.14.rpm rpm –ivh MySQL-client-5.6.14.rpm 啟動mysql 創建hive用戶 grant all on *.* to hadoop@’%’ identified by ‘h ...


 

一.環境的搭建

1.安裝配置mysql

rpm –ivh MySQL-server-5.6.14.rpm

rpm –ivh MySQL-client-5.6.14.rpm

啟動mysql

創建hive用戶

grant all on *.* to hadoop@’%’ identified by ‘hadoop’;

grant all on *.* to hadoop@’localhost’ identified by ‘hadoop’;

grant all on *.* to hadoop@’master’ identified by ‘hadoop’;

創建hive資料庫

create database hive_1;

2. hive的安裝

tar –zxvf  apache-hive-0.13-1-bin.tar.gz

3. hive的配置

vi /apache-hive-0.13-1-bin/conf/hive-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration>

<property>

<name>hive.metastore.local</name>

<value>true</value>

</property>

<property>

<name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://master:3306/hive_1?characterEncoding=UTF-8</value>

</property>

<property>

<name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value>

</property>

<property>

<name>javax.jdo.option.ConnectionUserName</name> <value>hadoop</value>

</property>

<property>

<name>javax.jdo.option.ConnectionPassword</name> <value>hadoop</value>

 </property>

</configuration>

4. tar -zxvf  mysql-connector-java-5.1.27.tar.gz

5. 將java connector複製到依賴庫中

cp mysql-connector-java-5.1.27-bin.jar ~/apache-hive-0.13-1-bin/lib/

6. 配置環境變數

vi  .bash_profile

HIVE_HOME = /home/gdou/apache-hive-0.13-1-bin

PATH=$PATH:$HIVE_HOME/bin

二.搜狗日誌數據分析

1. sogou.500w.utf8預處理

數據格式

 訪問時間\t  用戶ID \t  關鍵詞 \t  排名\t  \頁數 \t  URL

2.查看數據

 less sogou.500w.utf8

 wc -l sogou.500w.utf8

      head -100 sogou.500w.utf8  sogou.tmp

3. 數據擴展

 將時間欄位拆分並拼接,添加年 月 日 小時欄位

 bash sogou-log-extend.sh sogou.500w.utf8 sogou.500w.utf8.ext

4. 數據過濾

 過濾第二欄位UID和第三個欄位關鍵字為空的行

bash sogou-log-filter.sh sogou.500w.utf8.ext sogou.500w.utf8  sogou.500w.utf8.flt

5.將文件sogou.500w.utf8和sogou.500w.utf8.flt上傳至HDFS上。

6.HiveQL

—   基本操作

—  hive > show databases;

—  hive > create database sogou;

—  hive > use sogou;

—  hive > show tables;

—  hive > create external table sogou.sogou20111230(timestamp string, uid string, keyword string , rank int, order int, url string)

    > comment 'this is a sogou table'

    > row format delimited

    > fields terminated by '\t'

    > stored as textfile

    > location 'hdfs://master:9000/sogou/20111230';

— hive>show create table sogou.sogou20111230;

— hive>describe sogou.sogou20111230;

— hive> select * from sogou.sogou20111230 limit 3;

— select count(*) from sogou.sogou20111230;

— select count(distinct uid) from sogou.sogou20111230;

7.用hiveQL完成下列查詢(寫出HiveQL語句)

1)統計關鍵字非空查詢的條數;

select count(*) from sogou.sogou20111230 where keyword is not null;

結果為:5000000

2)查詢頻度最高的前五十個關鍵字;

select keyword,count(keyword) as num from sogou.sogou20111230 group by keyword order by num desc limit 50;

 

3)統計每個uid的平均查詢次數

select avg(bb.num) from (select count(b.uid) as num from sogou.sogou20111230 b group by b.uid) as bb;

 

輸出結果:3.69

4)搜索關鍵字內容包含‘仙劍奇俠’超過三次的用戶id

select tt.uid,tt.num from(select t.uid,count(t.uid) as num from (select * from sogou.sogou20111230 where keyword like concat('%','仙劍奇俠','%')) as t group by t.uid order by num desc) tt where tt.num > 3 limit 50;

輸出結果:

 

5)查找直接輸入URL作為關鍵字的條目;

select * from sogou.sogou20111230 where keyword rlike '[a-zA-z]+://[^\s]*' limit 50;

 

 

6)統計不重覆的uid的行數;

select count(DISTINCT uid) from sogou.sogou20111230;

 

輸出結果:1352664

 

相關資料:

鏈接:http://pan.baidu.com/s/1dFD7mdr 密碼:xwu8


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 電腦中已經安裝nodejs。 cmd進入dos界面,輸入文件路徑;然後輸入>node 文件名.js ...
  • 隨機產生20個單詞 一、問題來源: 老師給了一份專業單詞word,說第二天要全背下來。錯了就五十遍啊五十遍。 然後,有人提出要做一個產生隨機單詞的Demo,來測試自己。 老師表示呵呵,做出來的就可以不用聽寫。 頓時,我就表示,是可忍,孰不可忍啊。這是在侮辱我們啊。這票我幹了,不能讓人看低了。我這麼做 ...
  • 每次寫代碼總會忘記一些東西,又要重新Goooooooooogle,好煩吶~ ...
  • 本文介紹了Android 7系統原生支持的多視窗分屏顯示及VR系統的兩種分屏顯示模式。 ...
  • protobuf 交叉編譯筆記 目標是使用 android ndk 的工具鏈編譯出 android armeabi v7a 可用的 protobuf 庫。 交叉編譯環境配置 windows 平臺 1. 下載 "NDK x86_64" 或者 "NDK x86" 並解壓縮 2. 下載 "protobuf ...
  • 概述 最近因為業務的需求寫了一段時間存儲過程,發現之前寫的存儲過程存在一些不嚴謹的地方,特別是TRY...CATCH中嵌套事務的寫法;雖然之前寫的並沒有錯,但是還是埋藏著很大的隱患在裡面。希望這篇文章能給大家一些參考;文章內容有點長還望耐心閱讀。 1.插入測試數據 創建表 DROP TABLE sc ...
  • [20171120]11g select for update skip locked.txt--//11G在select for update遇到阻塞時可以通過skipped locked跳過阻塞的記錄,測試看看:1.環境:SCOTT@book> @ &r/ver1PORT_STRING VERS ...
  • 有序集SortedSet算是redis中一個很有特色的數據結構,通過這篇文章來總結一下這塊知識點。 原文地址:http://www.jianshu.com/p/75ca5a359f9f 一、有序集SortedSet命令簡介 redis中的有序集,允許用戶使用指定值對放進去的元素進行排序,並且基於該已 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...