国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Spark的音樂專輯數(shù)據(jù)分析

這篇具有很好參考價(jià)值的文章主要介紹了基于Spark的音樂專輯數(shù)據(jù)分析。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

每天天都在努力學(xué)習(xí)的我們

前言

????????本篇博客講解的內(nèi)容依舊是使用Spark進(jìn)行相關(guān)的數(shù)據(jù)分析,按理來(lái)說(shuō)數(shù)據(jù)分析完之后應(yīng)該搞一搞可視化的,由于目前時(shí)間緊張,顧不得學(xué)習(xí)可視化了,先來(lái)看一下此次的內(nèi)容把。

????????在Kaggle數(shù)據(jù)平臺(tái)下載了數(shù)據(jù)集albunms.csv,里面包含了的主要字段如下,先來(lái)看一下。

基于Spark的音樂專輯數(shù)據(jù)分析

使用Spark讀取csv

????????spark讀取csv的方式有兩種,一種是使用rdd進(jìn)行讀取csv,然后創(chuàng)建RDD對(duì)象。另一種是使用spark SQL進(jìn)行讀取,創(chuàng)建DataFrame對(duì)象。本篇博客使用Spark SQL進(jìn)行讀取文件,RDD和Data Frame處理數(shù)據(jù)。

????????csv文件我們都知道,","分隔符,但是讀取csv文件的同時(shí)也要注意是否有無(wú)表頭,表頭字段類型。下面來(lái)看一下Spark SQL讀取csv。

private 
val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("Spark SQL") private
val sparkContext = new SparkContext(sparkConf) 
private val sparkSession: SparkSession =SparkSession.builder().config(sparkConf).getOrCreate() 

import sparkSession.implicits._ def 
Transform_demo()={ 
//使用sparksession 讀取csv文件,此csv文件有表頭 
val dataFrame = sparkSession.read.format("com.databricks.spark.csv") 
//有無(wú)表頭 
.option("header", true)
 //是否自動(dòng)推斷表頭類型
 .option("inferSchema", false) 
//分隔符 
.option("delimiter", ",") 
//csv文件的地址 
.csv("date/albums.csv") 
dataFrame 
}

統(tǒng)計(jì)各類型專輯的數(shù)量

????????思路:

????????各類型專輯的數(shù)量 ==》根據(jù)專輯類型(genre)分組,求出專輯類型的總和

????????使用spark SQL進(jìn)行處理

def genre_demo() = {
 //統(tǒng)計(jì)各個(gè)類型專輯的數(shù)量 
val unit = Transform_demo()
.select($"genre") 
.groupBy($"genre")
.count()
.sort($"count".desc)
.show() }

????????在Spark SQL中使用group by的時(shí)候,提供了group by之后的操作,比如

????????max(colNames:String*):獲取分組中指定字段或者所有的數(shù)字類型字段的最大值,只能作用于數(shù)字型字段。

????????min(colNames:String*):獲取分組字段或者所有的數(shù)字類型字段的最小值,只能作用于數(shù)字類型的字段。

????????mean(colName:String*):獲取分組中指定字段或者所有數(shù)字類型字段的平均值,只能作用于數(shù)據(jù)類型的字段

????????sum(colNames:String*):獲取分組中指定字段或者所有數(shù)字類型字段的累加值,只能作用于數(shù)字類型的字段

????????count():獲取分組中的元素個(gè)數(shù)

????????根據(jù)genre字段分組后,求出專輯類型的個(gè)數(shù),對(duì)專輯類型的個(gè)數(shù)進(jìn)行排序。如果需要導(dǎo)入到文件里面,那么需要.write。

使用Rdd進(jìn)行處理

?????def genre_demo() = {
 val value = Transform_demo()
.select($"genre") 
.rdd
 .map(v => (v(0), 1))
 .reduceByKey(_ + _)
 .sortBy(_._2,false)

????????展示一下上面的流程圖把

基于Spark的音樂專輯數(shù)據(jù)分析

統(tǒng)計(jì)各類型專輯的銷量總數(shù)

思路:

????????根據(jù)專輯類型分組,分組之后,計(jì)算num_of_sales專輯銷量總和。

????????如果是spark SQL的話,流程應(yīng)該是這樣的。

????????dataFrame => select => group by => sum()

????????來(lái)看一下代碼

def countByNum_sales()={
 Transform_demo()
.select($"genre",$"num_of_sales") 
.withColumn("num_of_sales",col("num_of_sales")
 .cast("Integer")) 
.groupBy("genre")
 .sum("num_of_sales") 
.orderBy($"sum(num_of_sales)".desc)
 .show() }

????????如果在group by后面直接sum求和,那么是會(huì)報(bào)錯(cuò)的,因?yàn)樵谧铋_始的時(shí)候,我們并沒有讓系統(tǒng)自動(dòng)推斷表頭的數(shù)據(jù)類型,默認(rèn)為String類型,因此需要先轉(zhuǎn)換為整型,然后對(duì)其進(jìn)行操作。

????????來(lái)看一下RDD的代碼

def countByNum_sales()={
 val value = Transform_demo()
.select($"genre", $"num_of_sales") 
.rdd 
.map(v => (v(0).toString, v(1).toString.toInt))
.reduceByKey(_ + _) .sortBy(_._2, false) 
value }

基于Spark的音樂專輯數(shù)據(jù)分析

統(tǒng)計(jì)近20年每年發(fā)行的專輯數(shù)量和單曲數(shù)量

????????思路:

????????根據(jù)年份分組(year_of_pub),求每年發(fā)行的專輯數(shù)量和單曲數(shù)量。

????????單曲數(shù)量很簡(jiǎn)單(num_of_tracks)累加,但是專輯數(shù)量怎么表示呢?

????????注意一下,num_of_tracks字段:每張專輯中的單曲數(shù)量,什么意思呢?來(lái)看一下這樣的表示

????????(num_of_tracks,1) =》 (每張專輯的單曲數(shù)量,專輯數(shù)量)

????????這個(gè)1就代表著專輯的數(shù)量。

????????用RDD來(lái)理一下思路,(年份,(每張專輯的單曲數(shù)量,1)) ==>經(jīng)過(guò)reduceByKey (年份,(每年發(fā)行的單曲數(shù)量,每年發(fā)行的專輯數(shù)量))

def Countbytracks() ={
 //統(tǒng)計(jì)近20年每年發(fā)行的專輯數(shù)量和單曲數(shù)量;
 //每年發(fā)行的單曲數(shù)量 num_of_tracks 專輯數(shù)量怎么算呢?
 //num_of_tracks: 每張專輯中單曲數(shù)量
 //(1張專輯,專輯發(fā)行的單曲數(shù)量) 
val array = Transform_demo()
.select($"year_of_pub", $"num_of_tracks")
.rdd 
.map(v => (v(0).toString.toInt, (v(1).toString.toInt, 1)))
 .reduceByKey((x, y) => (x._1 + y._1, (x._2 + y._2)))
 .sortByKey() 
array }

來(lái)看一下流程圖

基于Spark的音樂專輯數(shù)據(jù)分析

分析總銷量前五的專輯類型的各年份銷量

????????思路:

????????首先求出來(lái)總銷售量前五的專輯類型,然后取前五個(gè)數(shù)量最多的,之后在這個(gè)五個(gè)數(shù)量最多的專輯類型里面計(jì)算每年的銷量。

????????首先獲取總銷售量前五的專輯類型

def get_genre() = { 
//先獲取總銷售量前5的專輯類型 
val array = Transform_demo()
.select($"genre", $"num_of_sales") 
.withColumn("num_of_sales", col("num_of_sales").cast("Integer")) 
.groupBy($"genre")
 .sum("num_of_sales")
 .orderBy($"sum(num_of_sales)".desc) 
.rdd 
.map(v => v(0).toString) 
.take(5) 
array }

????????首先更改字段類型,根據(jù)銷售類型(genre)分組,找到銷量最多的銷售類型.經(jīng)過(guò)map轉(zhuǎn)換之后取前五個(gè)銷售類型。

????????獲取總銷量前5的專輯類型的各年份銷量

def per_year_sales()={
 val genre_list = get_genre()
 val value = Transform_demo()
.select($"genre", $"year_of_pub", $"num_of_sales")
 .rdd
 .filter(v => genre_list.contains(v(0)) )
 .map(v => ((v(0).toString, v(1).toString), v(2).toString.toInt)) 
.reduceByKey(_ + _)
 value }

????????如果單獨(dú)看上面的代碼看不懂,那么來(lái)看一下下面的流程圖把,一定明明白白。

基于Spark的音樂專輯數(shù)據(jù)分析

總結(jié)

????????關(guān)于這篇音樂分析項(xiàng)目就到此為止了。

????????關(guān)于對(duì)數(shù)據(jù)的基本處理已經(jīng)有了些眉目,接下來(lái)就是不斷的練習(xí)練習(xí)。

????????之后還有會(huì)其它的項(xiàng)目,我們最終的Boss項(xiàng)目就是離線數(shù)倉(cāng)項(xiàng)目的建設(shè)。

????????最后,希望我的她可以越來(lái)越好,天天開心文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-482369.html

到了這里,關(guān)于基于Spark的音樂專輯數(shù)據(jù)分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • python-大數(shù)據(jù)分析-基于大數(shù)據(jù)的QQ音樂數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    python-大數(shù)據(jù)分析-基于大數(shù)據(jù)的QQ音樂數(shù)據(jù)分析系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    DESIGN DESCRIPTION After hundreds of years of development of digital music market at home and abroad, the total number of music works collected has reached a considerable degree. Faced with such a large number of music works, how to let users hear their favorite music works more conveniently and efficiently is a matter that music platforms must consider, and

    2024年02月03日
    瀏覽(24)
  • 畢設(shè):《基于hive的音樂數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》

    畢設(shè):《基于hive的音樂數(shù)據(jù)分析系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)》

    啟動(dòng)hadoop圖形化界面 啟動(dòng)hive 1、配置免密登錄 vim core-site.xml hdfs-site.xml 1、關(guān)閉防火墻 2、初始化 3、配置啟動(dòng)用戶 4、啟動(dòng) 5、訪問 6、配置環(huán)境變量方便啟動(dòng) 卸載Centos7自帶mariadb 配置文件 初始化表 1、拉取sqoop 2、配置 3、加入mysql的jdbc驅(qū)動(dòng)包 修改yarn-site.xml 重啟 1、hive創(chuàng)建數(shù)

    2024年02月04日
    瀏覽(16)
  • 基于Spark的氣象數(shù)據(jù)分析

    基于Spark的氣象數(shù)據(jù)分析

    研究背景與方案 1.1.研究背景 在大數(shù)據(jù)時(shí)代背景下,各行業(yè)數(shù)據(jù)的規(guī)模大幅度增加,數(shù)據(jù)類別日益復(fù)雜,給數(shù)據(jù)分析工作帶來(lái)極大挑戰(zhàn)。 氣象行業(yè)和人們 的生活息息相關(guān),隨著信息時(shí)代的發(fā)展,大數(shù)據(jù)技術(shù)的出現(xiàn)為氣象數(shù)據(jù)的發(fā)展帶來(lái)機(jī)遇?;诖?,本項(xiàng)目使用 Spark 等大

    2024年02月09日
    瀏覽(24)
  • 基于Spark技術(shù)的銀行客戶數(shù)據(jù)分析

    基于Spark技術(shù)的銀行客戶數(shù)據(jù)分析

    申明: 未經(jīng)許可,禁止以任何形式轉(zhuǎn)載,若要引用,請(qǐng)標(biāo)注鏈接地址 全文共計(jì)4672字,閱讀大概需要3分鐘 大數(shù)據(jù)實(shí)驗(yàn)教學(xué)系統(tǒng) 案例:銀行客戶數(shù)據(jù)分析 某銀行積累有大量客戶數(shù)據(jù),現(xiàn)希望大數(shù)據(jù)分析團(tuán)隊(duì)使用Spark技術(shù)對(duì)這些數(shù)據(jù)進(jìn)行分析,以期獲得有價(jià)值的信息。 本案例用

    2024年02月09日
    瀏覽(43)
  • 大數(shù)據(jù)開源框架之基于Spark的氣象數(shù)據(jù)處理與分析

    大數(shù)據(jù)開源框架之基于Spark的氣象數(shù)據(jù)處理與分析

    Spark配置請(qǐng)看: (30條消息) 大數(shù)據(jù)開源框架環(huán)境搭建(七)——Spark完全分布式集群的安裝部署_木子一個(gè)Lee的博客-CSDN博客 目錄 實(shí)驗(yàn)說(shuō)明: 實(shí)驗(yàn)要求: 實(shí)驗(yàn)步驟: 數(shù)據(jù)獲?。?數(shù)據(jù)分析: 可視化: 參考代碼(適用于python3): 運(yùn)行結(jié)果: ????????本次實(shí)驗(yàn)所采用的數(shù)據(jù),從中

    2024年02月03日
    瀏覽(27)
  • 大數(shù)據(jù)期末課設(shè)~基于spark的氣象數(shù)據(jù)處理與分析

    大數(shù)據(jù)期末課設(shè)~基于spark的氣象數(shù)據(jù)處理與分析

    目錄 ? ? ? 一 、項(xiàng)目背景 .......................................... 3 ? ? ??二 、實(shí)驗(yàn)環(huán)境 .......................................... 3 三 、實(shí)驗(yàn)數(shù)據(jù)來(lái)源 ...................................?4 四 、數(shù)據(jù)獲取 .......................................... 5 五 、數(shù)據(jù)分析 ......................................... 17 六 、數(shù)據(jù)

    2023年04月09日
    瀏覽(25)
  • 基于spark對(duì)美國(guó)新冠肺炎疫情數(shù)據(jù)分析

    基于spark對(duì)美國(guó)新冠肺炎疫情數(shù)據(jù)分析

    GCC的同學(xué)不要抄襲呀?。。?yán)禁抄襲 有任何學(xué)習(xí)問題可以加我微信交流哦!bmt1014 前言 2020年美國(guó)新冠肺炎疫情是全球范圍內(nèi)的一場(chǎng)重大公共衛(wèi)生事件,對(duì)全球政治、經(jīng)濟(jì)、社會(huì)等各個(gè)領(lǐng)域都產(chǎn)生了深遠(yuǎn)影響。在這場(chǎng)疫情中,科學(xué)家們發(fā)揮了重要作用,積極探索病毒特性、傳

    2024年02月04日
    瀏覽(18)
  • Spark內(nèi)容分享(二十七):阿里云基于 Spark 的云原生數(shù)據(jù)湖分析實(shí)踐

    Spark內(nèi)容分享(二十七):阿里云基于 Spark 的云原生數(shù)據(jù)湖分析實(shí)踐

    目錄 Spark 與云原生的結(jié)合 1. 傳統(tǒng) Spark 集群的痛點(diǎn) 2. Spark 與云原生結(jié)合的優(yōu)勢(shì) Spark on K8s 原理介紹 1. Spark 的集群部署模式 2. Spark on K8s 的部署架構(gòu) 3. Spark on K8s 部署架構(gòu)——對(duì)比 4. Spark on K8s 社區(qū)進(jìn)展 5. Spark 3.3 新特性介紹 Spark on K8s 在阿里云 EMR 上的實(shí)踐 1. EMR Spark on ACK 2. 充分

    2024年01月15日
    瀏覽(19)
  • 【大數(shù)據(jù)平臺(tái)】基于Spark的美國(guó)新冠肺炎疫情數(shù)據(jù)分析及預(yù)測(cè)

    【大數(shù)據(jù)平臺(tái)】基于Spark的美國(guó)新冠肺炎疫情數(shù)據(jù)分析及預(yù)測(cè)

    一、選題背景 新型冠狀病毒疫情是由嚴(yán)重急性呼吸系統(tǒng)綜合征冠狀病毒2(SARS-CoV-2)導(dǎo)致的2019冠狀病毒?。–OVID-19)所引發(fā)的全球大流行疫情。該疾病在2019年末于中華人民共和國(guó)湖北省武漢市首次爆發(fā),隨后在2020年初迅速擴(kuò)散至全球多國(guó),逐漸變成一場(chǎng)全球性的大瘟疫。截

    2023年04月19日
    瀏覽(24)
  • 畢業(yè)設(shè)計(jì):基于Python網(wǎng)易云音樂數(shù)據(jù)采集分析可視化系統(tǒng)+分析大屏 Flask框架 (附源碼)建議收藏

    畢業(yè)設(shè)計(jì):基于Python網(wǎng)易云音樂數(shù)據(jù)采集分析可視化系統(tǒng)+分析大屏 Flask框架 (附源碼)建議收藏

    [畢業(yè)設(shè)計(jì)]2023-2024年最新最全計(jì)算機(jī)專業(yè)畢設(shè)選題推薦匯總 感興趣的可以先收藏起來(lái),還有大家在畢設(shè)選題,項(xiàng)目以及論文編寫等相關(guān)問題都可以給我留言咨詢,希望幫助更多的人?。 隨著互聯(lián)網(wǎng)技術(shù)的發(fā)展,音樂成為了人們生活中不可或缺的一部分,而網(wǎng)易云音樂作為國(guó)內(nèi)

    2024年02月01日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包