
《大數(shù)據(jù)平臺應用技術》實驗指導書(含實驗報告模板)模板
16頁實驗一 HDFS操作方法和編程實踐一、實驗目的l 理解HDFS在Hadoop體系結(jié)構(gòu)中的角色;l 熟練使用HDFS操作常用的Shell命令;l 熟悉HDFS操作常用的Java API二、實驗平臺l 操作系統(tǒng):Linux(建議Ubuntu16.04);l Hadoop版本:2.7.1;l JDK版本:1.7或以上版本;l Java IDE:Eclipse三、實驗內(nèi)容(一)熟悉HDFS操作常用的Shell命令(1)使用hadoop用戶登錄Linux系統(tǒng),啟動Hadoop(Hadoop的安裝目錄為“/usr/local/hadoop”),為hadoop用戶在HDFS中創(chuàng)建用戶目錄“/user/Hadoop”2)接著在HDFS的目錄“/user/hadoop”下,創(chuàng)建test文件夾,并查看文件列表3)將Linux系統(tǒng)本地的“~/.bashrc”文件上傳到HDFS的test文件夾中,并查看test4)將HDFS文件夾test復制到Linux系統(tǒng)本地文件系統(tǒng)的“/usr/local/hadoop”目錄下二)編程實現(xiàn)以下功能:(1)向HDFS中上傳任意文本文件,如果指定的文件在HDFS中已經(jīng)存在,則由用戶來指定是追加到原有文件末尾還是覆蓋原有的文件;(2)從HDFS中下載指定文件,如果本地文件與要下載的文件名稱相同,則自動對下載的文件重命名;(3)將HDFS中指定文件的內(nèi)容輸出到終端中;(4)提供一個HDFS內(nèi)的文件的路徑,對該文件進行創(chuàng)建和刪除操作。
如果文件所在目錄不存在,則自動創(chuàng)建目錄;(5)刪除HDFS中指定的文件; 實驗二 HBase Shell命令和編程實踐一、實驗目的l 理解HBase在Hadoop體系結(jié)構(gòu)中的角色;l 熟練使用HBase操作常用的Shell命令;l 熟悉HBase操作常用的Java API二、實驗平臺l 操作系統(tǒng):Linux(建議Ubuntu16.04);l Hadoop版本:2.7.1;l HBase版本:1.1.5;l JDK版本:1.7或以上版本;l Java IDE:Eclipse三、實驗內(nèi)容 (一)編程實現(xiàn)以下指定功能,并用Hadoop提供的HBase Shell命令完成相同任務:(1) 列出HBase所有的表的相關信息,例如表名;(2) 在終端打印出指定的表的所有記錄數(shù)據(jù); (3) 向已經(jīng)創(chuàng)建好的表添加和刪除指定的列族或列;(4) 清空指定的表的所有記錄數(shù)據(jù);(5) 統(tǒng)計表的行數(shù)二)HBase數(shù)據(jù)庫操作1. 現(xiàn)有以下關系型數(shù)據(jù)庫中的表和數(shù)據(jù),要求將其轉(zhuǎn)換為適合于HBase存儲的表并插入數(shù)據(jù):學生表(Student)學號(S_No)姓名(S_Name)性別(S_Sex)年齡(S_Age)2015001Zhangsanmale232015003Maryfemale222015003Lisimale24課程表(Course)課程號(C_No)課程名(C_Name)學分(C_Credit)123001Math2.0123002Computer Science5.0123003English3.0 選課表(SC)學號(SC_Sno)課程號(SC_Cno)成績(SC_Score)201500112300186201500112300369201500212300277201500212300399201500312300198201500312300295 2. 請編程實現(xiàn)以下功能接口,并在主程序中調(diào)用這些功能接口進行測試:(1)createTable(String tableName, String[] fields) 創(chuàng)建表,參數(shù)tableName為表的名稱,字符串數(shù)組fields為存儲記錄各個字段名稱的數(shù)組。
要求當HBase已經(jīng)存在名為tableName的表的時候,先刪除原有的表,然后再創(chuàng)建新的表 (2)addRecord(String tableName, String row, String[] fields, String[] values) 向表tableName、行row和字符串數(shù)組fields指定的單元格中添加對應的數(shù)據(jù)values其中,fields中每個元素如果對應的列族下還有相應的列限定符的話,用“columnFamily:column”表示例如,同時向“Math”、“Computer Science”、“English”三列添加成績時,字符串數(shù)組fields為{“Score:Math”, ”Score:Computer Science”, ”Score:English”},數(shù)組values存儲這三門課的成績 (3)scanColumn(String tableName, String column) 瀏覽表tableName某一列的數(shù)據(jù),如果某一行記錄中該列數(shù)據(jù)不存在,則返回null要求當參數(shù)column為某一列族名稱時,如果底下有若干個列限定符,則要列出每個列限定符代表的列的數(shù)據(jù);當參數(shù)column為某一列具體名稱(例如“Score:Math”)時,只需要列出該列的數(shù)據(jù)。
(4)modifyData(String tableName, String row, String column) 修改表tableName,行row,列column指定的單元格的數(shù)據(jù)5)deleteRow(String tableName, String row) 刪除表tableName中row指定的行的記錄實驗三 MapReduce編程實踐一、實驗目的(1)通過實驗掌握基本的MapReduce編程方法;(2)掌握用MapReduce解決一些常見的數(shù)據(jù)處理問題,包括數(shù)據(jù)去重、數(shù)據(jù)排序等二、實驗平臺(1)操作系統(tǒng):Linux(建議Ubuntu16.04)(2)Hadoop版本:2.7.1三、實驗內(nèi)容(一)編程實現(xiàn)文件合并和去重操作對于兩個輸入文件,即文件A和文件B,請編寫MapReduce程序,對兩個文件進行合并,并剔除其中重復的內(nèi)容,得到一個新的輸出文件C下面是輸入文件和輸出文件的一個樣例供參考輸入文件A的樣例如下: 20170101 x 20170102 y 20170103 x 20170104 y 20170105 z20170106 x輸入文件B的樣例如下:20170101 y20170102 y20170103 x20170104 z20170105 y根據(jù)輸入文件A和B合并得到的輸出文件C的樣例如下:20170101 x20170101 y20170102 y20170103 x20170104 y20170104 z20170105 y 20170105 z20170106 x(二)編寫程序?qū)崿F(xiàn)對輸入文件的排序現(xiàn)在有多個輸入文件,每個文件中的每行內(nèi)容均為一個整數(shù)。
要求讀取所有文件中的整數(shù),進行升序排序后,輸出到一個新的文件中,輸出的數(shù)據(jù)格式為每行兩個整數(shù),第一個數(shù)字為第二個整數(shù)的排序位次,第二個整數(shù)為原待排列的整數(shù)下面是輸入文件和輸出文件的一個樣例供參考輸入文件1的樣例如下:33371240輸入文件2的樣例如下:416395輸入文件3的樣例如下:14525根據(jù)輸入文件1、2和3得到的輸出文件如下:1 12 43 54 125 166 257 338 379 3910 4011 45 實驗四 Spark編程實踐一、實驗目的(1)熟悉Spark的RDD基本操作及鍵值對操作;(2)熟悉使用RDD編程解決實際具體問題的方法二、實驗平臺操作系統(tǒng):Ubuntu16.04Spark版本:2.4.0Python版本:3.4.3三、實驗內(nèi)容和要求1.pyspark交互式編程請到智慧樹平臺下載data1.txt,該數(shù)據(jù)集包含了某大學計算機系的成績,數(shù)據(jù)格式如下所示:Tom,DataBase,80Tom,Algorithm,50Tom,DataStructure,60Jim,DataBase,90Jim,Algorithm,60Jim,DataStructure,80……請根據(jù)給定的實驗數(shù)據(jù),在pyspark中通過編程來計算以下內(nèi)容:(1)該系總共有多少學生;(2)該系共開設了多少門課程;(3)Tom同學的總成績平均分是多少;(4)求每名同學的選修的課程門數(shù);2.編寫獨立應用程序?qū)崿F(xiàn)數(shù)據(jù)去重對于兩個輸入文件A和B,編寫Spark獨立應用程序,對兩個文件進行合并,并剔除其中重復的內(nèi)容,得到一個新文件C。
下面是輸入文件和輸出文件的一個樣例,供參考輸入文件A的樣例如下:20170101 x20170102 y20170103 x20170104 y20170105 z20170106 z輸入文件B的樣例如下:20170101 y20170102 y20170103 x20170104 z20170105 y根據(jù)輸入的文件A和B合并得到的輸出文件C的樣例如下:20170101 x20170101 y20170102 y20170103 x20170104 y20170104 z20170105 y20170105 z20170106 z3.編寫獨立應用程序?qū)崿F(xiàn)求平均值問題每個輸入文件表示班級學生某個學科的成績,每行內(nèi)容由兩個字段組成,第一個是學生名字,第二個是學生的成績;編寫Spark獨立應用程序求出所有學生的平均成績,并輸出到一個新文件中下面是輸入文件和輸出文件的一個樣例,供參考Algorithm成績:小明 92小紅 87小新 82小麗 90Database成績:小明 95小紅 81小新 89小麗 85Python成績:小明 82小紅 83小新 94小麗 91平均成績?nèi)缦拢? (小紅,83.67) (小新,88.33) (小明,89.67) (小麗,88.67)附:實驗報告格式大數(shù)據(jù)平臺應用技術課程實驗報告課程名稱大數(shù)據(jù)平臺應用技術班級實驗日期姓名 學號實驗成績實驗名稱實驗目的實驗環(huán)境 實 驗 內(nèi) 容 實驗步驟及實現(xiàn)代碼調(diào)試過程及實驗結(jié)果 (詳細記錄在調(diào)試過程中出現(xiàn)的問題及解決方法。
記錄實驗執(zhí)行的結(jié)果,可以截圖)總結(jié) (。