大數據開發入門實例

2020-09-05 不冷

最近參加了一個大數據開發的培訓,整理一下在培訓過程中,老師一直說的一個案例。案例比較簡單,使用 MapReduce、hive、Spark 等框架進行計算,對框架有一個簡單的了解。現在對這個案例進行一個簡單的整理,方便後期學習。

一、數據

1.1 原始數據

原始數據


1.2 數據說明

數據按照逗號(,)分割,每列數據說明如下:

序號 說明 備註

1 學號

2 姓名

3 性別

4 年齡

5 上學期成績 學科成績以&分割,學科=成績

6 下學期成績 學科成績以&分割,學科=成績

二、需求

統計第一學期數學成績及格和不及格的人數

三、解決方案

數據結構相對比較簡單,分析每行數據中的第一學期數學成績,判斷其中數據成績是否及格,如果及格,則統計及格的人數,不及格統計不及格的人數。

3.1.準備工作

在正式開始這項工作時,首先要保證自己的環境可以正常運行,hadoop 集群、mysql、hive、spark 集群可以正常運行。

3.1.1 環境準備

進入 hadoop 的 sbin 目錄: 1.啟動 DFS

./start-dfs.sh

2.啟動 yarn

 ./start-yarn.sh

3.啟動 hive,進入 hive 的 bin 目錄

 啟動hive的metastore服務hive --service metastore &34;Math_Score_Pass&34;Math_Score_Not_Pass&34;,&34;&&34;=&34;StudentScoreCount&39;,&將本地文件導入hiveload data local inpath &39; into table student;39;HDFS路徑&39;/root/2020/01/student&39;&&39;=&39;&&39;=&39;&&39;=&39;&&39;=&34;Spark Student Score&34;local[2]&34;Math_Score_Pass&34;Math_Score_Not_Pass&34;,&34;&&34;=&34;Math_Score_Pass&34;Math_Score_Not_Pass",1),然後使用 reduceByKey 將所有的結果進行累加,最後保存到 HDFS 的指定目錄。

3.4.2 執行程序

    spark-submit \    --master local \    --class com.spark.StudentScore \    original-spark-training-1.0-SNAPSHOT.jar \    /data/student /data/spark/studentscore/

3.4.3 查看執行結果

查看 hdfs 結果結果目錄::

    hdfs dfs -ls /data/spark/studentscore/

HDFS結果

HDFS結果

查看 HDFS 結果內容:

    hdfs dfs -cat /data/spark/studentscore/par*

HDFS結果內容


在結果目錄中,發現產生了 2 個 part-0000* 的文件,我們要看一下 具體是什麼原因產生的: 查閱相關資料,發現從 hdfs 中讀取文件,源碼默認的分區數是 2,分區數決定最終的結果

在默認的 textfile 中,如果從 hdfs 中讀取文件,源碼中默認的分區數是 2,如果想改變分區數,可以在 textfile 中設置第二個參數「分區數」

查看 textFile 源碼

查看 hadoopFile 源碼


其中 defaultMinPartitions 為定義的默認分區數:

3.4.4 源碼

spark 的實現代碼可以在 github 上進行下載spark-training[2]

參考資料

[1] hadoop-training: https://github.com/fulinmao/hadoop-training/

[2] spark-training: https://github.com/fulinmao/spark-training/

相關焦點

  • 大數據入門:SparkCore開發調優原則
    在大數據計算引擎當中,Spark受到的重視是越來越多的,尤其是對數據處理實時性的要求越來越高,Hadoop原生的MapReduce引擎受到詬病,Spark的性能也需要不斷調整優化。今天的大數據入門分享,我們就來講講SparkCore開發調優原則。
  • 大數據基礎:Java多線程入門
    在大數據開發學習當中,Java基礎是非常重要的一部分,打好了Java基礎,才能在後續的大數據框架技術學習階段,也能有所主力。而Java當中的一個重要知識點,就是多線程。今天的大數據基礎分享,我們就主要來講講Java多線程入門基礎。
  • 大數據入門必讀經典!
    如今我們身處於一個大數據時代,不管是雲計算、社交網絡,還是物聯網、移動網際網路和智慧城市,都要與大數據搭上聯繫。隨著雲計算、移動網際網路和物聯網等新一代信息技術的創新和應用普及。學習大數據,除了線上的課程,一些經典的技術書籍是非常實用且有幫助的。
  • 基於Faker生成中文測試數據實例
    上一篇 基於Python生成中文測試數據 講解了如何使用python代碼自己實現中文測試數據的生成,這篇我們分享如何基於Faker
  • 10月18日 | C#範例開發大全 入門到精通 項目開發基礎視頻教程 488個實例3.3G
    第1篇 基礎窗體開發篇第1章 窗體設置(教學視頻:55分鐘) 21.1 常規窗體設置 2實例001 控制窗體大小 2實例002 最前端顯示窗體 3實例003 設置窗體相對起始位置 3實例004 設置窗體透明度 4實例005 設置窗體顏色 5實例006 在多窗體間移動控制項 6
  • 為什麼入門大數據選擇Python而不是Java?
    畢竟出自wuli馬大大之口,今年二月份我開始了學習大數據的道路,直到現在對大數據的學習脈絡和方法也漸漸清晰。今天我們就來談談學習大數據入門語言的選擇。當然並不只是我個人之見,此外我搜集了各路大神的見解綜合起來跟大家做個討論。java和python的區別到底在哪裡?
  • 鴻蒙應用開發入門(一):鴻蒙系統的概述
    這種布局讓設備都具有分布式能力,我們可以很輕鬆地讓多設備中的數據、文件在應用中都具有一致性,在一個設備上修改數據,上傳文件,其他設備自動同步,我們應用開發者不在需要去建立設備與設備之間的連接,維護這個連接去進行數據通信,我們只需要用就可以了o((≧▽≦o)!調用手機以外的設備和調用本地設備幾乎沒什麼區別,大大簡化我們的多設備協同的開發難度!贊!
  • Python機器學習入門實例
    本文來源《Python程序設計案例教程——從入門到機器學習(微課版)》1.
  • 大數據入門:Hadoop Yarn組件基礎解析
    在Hadoop框架當中,Yarn組件是在Hadoop2.0之後的版本開始引入,主要是為了解決資源管理和調度的相關問題,是在大數據平臺的實際運用當中,根據實際需求而引入的解決方案。今天的大數據入門分享,我們就來對Hadoop Yarn組件做個簡單的基礎解析。
  • 大數據入門:Hive應用場景
    在大數據的發展當中,大數據技術生態的組件,也在不斷地拓展開來,而其中的Hive組件,作為Hadoop的數據倉庫工具,可以實現對Hadoop集群當中的大規模數據進行相應的數據處理。今天我們的大數據入門分享,就主要來講講,Hive應用場景。
  • 實例集錦與提高技巧,助你高效學習LabVIEW
    其次是LabVIEW學習建議,對於LabVIEW如何入門,編者給出一點個人的學習經驗分享:單從技術角度來講,熟練掌握了下面的10個編程知識點,並能夠結合自己的工程領域實踐開發,完成相關數據採集,測量控制等應用程式開發,就能算是真正的LabVIEW入門了。
  • 大數據入門:Flink狀態編程與容錯機制
    在大數據技術發展歷程當中,Flink框架可以說是新一輪的熱點技術框架,主打流批一體的計算模式,成為更適應當下需求的技術框架,因此再也技術領域得到更多的重視。今天的大數據入門分享,我們主要來講講Flink框架的狀態編程與容錯機制。
  • 十六本python入門學習書籍推薦,python入門新手必看
    它不僅從計算機教學和計算機科學的角度講解了初學者如何才能更有效地去學習Python,而且特別強調用Python解決生活中的實際問題,精心組織了大量來源於生活中不同領域的與數值計算和數據處理相關的案例。通過《Python入門經典:以解決計算問題為導向的Python編程實踐》,讀者不僅能系統掌握Python編程相關的知識,而且還能掌握利用Python處理各種與數據相關的問題。
  • 數據分析學習入門寶典 狗熊會《R語言:從數據思維到數據實戰》
    近日,數據產業高端智庫,狗熊會推出又一教材力作——《R語言:從數據思維到數據實戰》。這本書可以作為高等院校數據科學相關專業教學的通用教材,也是新手學習的入門寶典。全書採用實例講解,新穎有趣,深入淺出,把R語言簡單靈活、包羅萬象的特點體現得淋漓盡致。無論讀者數據分析基礎如何,都能通過這本書快速上手,提升實戰能力。
  • 大數據入門:Spark Streaming實際應用
    今天的大數據入門分享,我們就來講講Spark Streaming實際應用。一、關於Spark Streaming實際上來說,Spark進行數據計算處理,是繼承了Hadoop MapReduce的理念,因此從實質定性來說,Spark仍然是一個批處理框架,而非流處理框架。
  • 前端開發和Python開發哪個更容易入門
    首先,從技術本身的難易程度來看,前端開發和Python開發都比較容易入門,對於基礎知識比較薄弱的初學者來說,從前端開發開始學起會更容易一些,而且也比較容易實現就業。前端開發雖然相對比較簡單,但是前端開發的內容卻非常多,在移動網際網路和大數據時代,前端開發也在逐漸全棧化。
  • Java開發之微信小程序JSON接口日期時間數據轉換Util實例
    JSON日期時間轉換有過微信小程序開發經驗的朋友肯定遇到過通過JSON轉換接口傳遞日期時間數據的問題,我們知道,一般的日期時間類型通過接口默認轉換的數據形式是: 「Thu Jan03 11:00:54 CST 2019」 ,而不是我們所需要的「yyyy-MM-dd」或「yyyy-MM-dd HH:mm:ss」這種形式,導致在微信小程序裡顯示的時候不倫不類,也不美觀,下面我們就直接上代碼實例來給大家介紹。
  • 零基礎學習軟體開發需要多久能入門
    通常來說,當前學習軟體開發可以考慮以下三個大的方向:第一:Web開發。當前Web開發的市場規模還是非常大的,從事Web開發的程式設計師也非常多,由於Web開發的技術體系相對比較成熟,可以參考的案例也比較多,所以選擇學習Web開發會有一個較好的學習體驗。
  • 大一學習軟體開發需要多久能入門
    Web開發的學習通常可以設定為以下三個大的階段:第一個階段:前端程式語言的學習。Web開發可以從前端開發開始學起,前端程式語言也比較容易入門,能夠讓初學者快速建立起學習的成就感。雖然前端編程比較容易入門,但是前端的內容卻比較多,而且比較雜,重點涉及到Html、CSS和JavaScript,通常需要3個月左右的學習時間可以入門。
  • php框架開發:實現最簡單的MVC框架實例教程
    需要的朋友可以參考下本文以一個實例的形式講述了PHP實現MVC框架的過程,比較淺顯易懂。具體分析如下:首先,在學習一個框架之前,基本上我們都需要知道什麼是mvc,即model-view-control,說白了就是數據控制以及頁面的分離實現,mvc就是這樣應運而生的,mvc分為了三個層次,而且三個層次各司其職,互不幹擾,首先簡單介紹下,各個層次:view即是視圖,也就是web頁面,control即是控制器 向系統發出指令的工具,model 簡單說是從資料庫中取出數據進行處理