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

Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作

這篇具有很好參考價(jià)值的文章主要介紹了Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

實(shí)驗(yàn)原理

Spark的核心就是RDD,所有在RDD上的操作會(huì)被運(yùn)行在Cluster上,Driver程序啟動(dòng)很多Workers,Workers在(分布式)文件系統(tǒng)中讀取數(shù)據(jù)后轉(zhuǎn)化為RDD(彈性分布式數(shù)據(jù)集),然后對RDD在內(nèi)存中進(jìn)行緩存和計(jì)算。
Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作,spark,java,scala
而RDD有兩種類型的操作 ,分別是Action(返回values)和Transformations(返回一個(gè)新的RDD)。
Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作,spark,java,scala

一、數(shù)據(jù)展示與前置準(zhǔn)備

某電商網(wǎng)站記錄了大量用戶對商品的收藏?cái)?shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在名為buyer_favorite1的文件中,數(shù)據(jù)格式以及數(shù)據(jù)內(nèi)容如下
Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作,spark,java,scala
在進(jìn)行后續(xù)操作前,請先開啟hadoop和spark服務(wù)??梢酝ㄟ^jps命令查看進(jìn)程是否開啟完整。

二、創(chuàng)建scala工程項(xiàng)目

1、開發(fā)環(huán)境:eclipse

打開已安裝完Scala插件的Eclipse,新建一個(gè)Scala項(xiàng)目,命名為spark4。
在spark4項(xiàng)目下新建包名,命名為my.scala。將scala object命名為ScalaWordCount。
Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作,spark,java,scala

2、導(dǎo)入運(yùn)行所需要的jar包。

右鍵項(xiàng)目,創(chuàng)建一個(gè)文件夾,名為lib。
將jar包導(dǎo)入進(jìn)來,再右鍵jar包,點(diǎn)擊Build Path=>Add to Build Path。(可以去我的資源里面下載spark1.x hadoop2.x)

3、編寫Scala語句,并統(tǒng)計(jì)用戶收藏?cái)?shù)據(jù)中,每個(gè)用戶收藏商品數(shù)量。
package my.scala  
import org.apache.spark.SparkConf  
import org.apache.spark.SparkContext  
object ScalaWordCount {  
    def main(args: Array[String]) {  
	    //創(chuàng)建Spark的配置對象sparkConf,設(shè)置Spark程序運(yùn)行時(shí)的配置信息; 
        val conf = new SparkConf()  
        conf.setMaster("local")  .setAppName("scalawordcount")
		//創(chuàng)建SparkContext對象,SparkContext是Spark程序所有功能的唯一入口,無論采用Scala、Java還是Python都必須有一個(gè)SparkContext;  
        val sc = new SparkContext(conf)   
        val rdd = sc.textFile("hdfs://localhost:9000/myspark/buyer_favorite1")   //根據(jù)具體的數(shù)據(jù)來源,通過SparkContext來創(chuàng)建RDD;
        //對初始的RDD進(jìn)行Transformation級別的處理。(首先將每一行的字符串拆分成單個(gè)的單詞,然后在單詞拆分的基礎(chǔ)上對每個(gè)單詞實(shí)例計(jì)數(shù)為1;
        //最后,在每個(gè)單詞實(shí)例計(jì)數(shù)為1的基礎(chǔ)上統(tǒng)計(jì)每個(gè)單詞在文件出現(xiàn)的總次數(shù))。
        rdd.map(line => (line.split("\t")(0), 1))  
           .reduceByKey(_ + _)  
           .collect()  
           .foreach(println)  
        sc.stop()  
    }  
}  

在控制界面console中查看的輸出結(jié)果。Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作,spark,java,scala

三、創(chuàng)建Java工程項(xiàng)目

再次右鍵點(diǎn)擊項(xiàng)目名,新建package,將包命名為my.java 。
右鍵點(diǎn)擊包my.java,新建Class,命名為JavaWordCount。

1、編寫Java代碼,統(tǒng)計(jì)用戶收藏?cái)?shù)據(jù)中,每個(gè)用戶收藏商品數(shù)量。
package my.java;  
import org.apache.spark.SparkConf;  
import org.apache.spark.api.java.JavaPairRDD;  
import org.apache.spark.api.java.JavaRDD;  
import org.apache.spark.api.java.JavaSparkContext;  
import org.apache.spark.api.java.function.FlatMapFunction;  
import org.apache.spark.api.java.function.Function2;  
import org.apache.spark.api.java.function.PairFunction;  
import scala.Tuple2;  
import java.util.Arrays;  
import java.util.List;  
import java.util.regex.Pattern;  
public final class JavaWordCount {  
 private static final Pattern SPACE = Pattern.compile("\t");  
 public static void main(String[] args) throws Exception {  
   SparkConf sparkConf = new SparkConf().setMaster("local").setAppName("JavaWordCount");  
   JavaSparkContext ctx = new JavaSparkContext(sparkConf);  
   JavaRDD<String> lines = ctx.textFile("hdfs://localhost:9000/myspark/buyer_favorite1");  
   JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {  
        @Override  
        public Iterable<String> call(String s) {  
            String word[]=s.split("\t",2);  
            return Arrays.asList(word[0]);  
        }  
    });  
   JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {  
        @Override  
        public Tuple2<String, Integer> call(String s) {  
            return new Tuple2<String, Integer>(s, 1);  
        }  
   });  
   JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {  
        @Override  
        public Integer call(Integer i1, Integer i2) {  
            return i1 + i2;  
            }  
        });  
   List<Tuple2<String, Integer>> output = counts.collect();  
   System.out.println(counts.collect());  
   counts.saveAsTextFile("hdfs://localhost:9000/myspark/out");  
   ctx.stop();  
  }  
}
2、在linux終端查看輸出結(jié)果

執(zhí)行如下命令查看結(jié)果,前提是已啟動(dòng)集群

hadoop fs -cat /myspark/out/part-00000  
寫在最后

由此可以看出,scala語言在編寫spark程序時(shí)的優(yōu)越性,簡短精煉。文章來源地址http://www.zghlxwxcb.cn/news/detail-553286.html

到了這里,關(guān)于Spark—通過Java、Scala API實(shí)現(xiàn)WordCount案例的基本操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • spring boot java項(xiàng)目整合Scala&Spark,接口api調(diào)用方式調(diào)用scala代碼,配置分享

    spring boot java項(xiàng)目整合Scala&Spark,接口api調(diào)用方式調(diào)用scala代碼,配置分享

    版本說明: spring boot: 2.5.9 jdk:1.8 spark:2.4.5 sclala:2.11.12 首先你需要有一個(gè)完美的spring boot項(xiàng)目(java版本)能成功運(yùn)行,這就不贅述了,按照網(wǎng)上的自己搭建吧,然后重要的來了,我搗鼓了兩天時(shí)間,各樣的報(bào)錯(cuò)見過了,網(wǎng)上的處理方法要嘛是不全,要嘛是沒有用,各種辦

    2024年02月10日
    瀏覽(30)
  • spark 經(jīng)典demo 的 scala 和 java 實(shí)現(xiàn)

    spark 經(jīng)典demo 的 scala 和 java 實(shí)現(xiàn)

    ????掃碼關(guān)注公眾號,回復(fù) spark 下載geekbang 原價(jià) 90 元 零基礎(chǔ)入門 Spark 學(xué)習(xí)資料???? 要先對文件中的單詞做統(tǒng)計(jì)計(jì)數(shù),然后再打印出頻次最高的 5 個(gè)單詞,江湖人稱“Word Count”wikiOfSpark.txt 文件下載地址:這里 scala 實(shí)現(xiàn) java實(shí)現(xiàn) ?為了限制機(jī)動(dòng)車保有量,從 2011 年

    2024年04月27日
    瀏覽(21)
  • Scala第二十章節(jié)(Akka并發(fā)編程框架、Akka入門案例、Akka定時(shí)任務(wù)代碼實(shí)現(xiàn)、兩個(gè)進(jìn)程間通信的案例以及簡易版spark通信框架案例)

    Scala第二十章節(jié)(Akka并發(fā)編程框架、Akka入門案例、Akka定時(shí)任務(wù)代碼實(shí)現(xiàn)、兩個(gè)進(jìn)程間通信的案例以及簡易版spark通信框架案例)

    章節(jié)目標(biāo) 理解Akka并發(fā)編程框架簡介 掌握Akka入門案例 掌握Akka定時(shí)任務(wù)代碼實(shí)現(xiàn) 掌握兩個(gè)進(jìn)程間通信的案例 掌握簡易版spark通信框架案例 1. Akka并發(fā)編程框架簡介 1.1 Akka概述 Akka是一個(gè)用于構(gòu)建高并發(fā)、分布式和可擴(kuò)展的基于事件驅(qū)動(dòng)的應(yīng)用工具包。Akka是使用scala開發(fā)的庫,

    2024年04月11日
    瀏覽(29)
  • 5 | Java Spark WordCount打成Jar 包測試

    步驟 1:準(zhǔn)備 WordCount 代碼 首先,確保 編寫了 WordCount 代碼,已經(jīng)提供了正確的輸入文件路徑。

    2024年02月10日
    瀏覽(15)
  • YARN On Mapreduce搭建與wordCount案例實(shí)現(xiàn)

    YARN On Mapreduce搭建與wordCount案例實(shí)現(xiàn)

    YARN的基本思想是將資源管理RM,和作業(yè)調(diào)度、監(jiān)控功能拆分成單獨(dú)的守護(hù)進(jìn)程。這個(gè)思想中擁有一個(gè)全局的資源管理器以及每個(gè)應(yīng)用的MASTER,AM。每一個(gè)應(yīng)用 都是單個(gè)作業(yè)或者一個(gè)DAG作業(yè)。 架構(gòu)圖: mapred-site.xml yarn-site.xml 配置節(jié)點(diǎn)分發(fā)到其他節(jié)點(diǎn)。 啟動(dòng)yarn 啟動(dòng)rm資源管理 訪

    2023年04月24日
    瀏覽(18)
  • IDEA上面書寫wordcount的Scala文件具體操作

    IDEA上面書寫wordcount的Scala文件具體操作

    ?IDEA創(chuàng)建項(xiàng)目的操作步驟以及在虛擬機(jī)里面創(chuàng)建Scala的項(xiàng)目簡單介紹_intellij 創(chuàng)建scala 目錄 系列文章目錄 1、編寫Scala程序 2、更換pom.xml文件 3、更新Maven的依賴文件 4、執(zhí)行代碼即可 總結(jié) 本文主要在上述文章的基礎(chǔ)上編輯和創(chuàng)建一個(gè)WordCount應(yīng)用程序 創(chuàng)建wordcount項(xiàng)目 選擇任意位

    2024年02月11日
    瀏覽(20)
  • Spark項(xiàng)目Java和Scala混合打包編譯

    Spark項(xiàng)目Java和Scala混合打包編譯

    實(shí)際開發(fā)用有時(shí)候引用自己寫的一些java工具類,但是整個(gè)項(xiàng)目是scala開發(fā)的spark程序,在項(xiàng)目打包時(shí)需要考慮到j(luò)ava和scala混合在一起編譯。 今天看到之前很久之前寫的一些打包編譯文章,發(fā)現(xiàn)很多地方不太對,于是重新整理更新如下。 我們的項(xiàng)目結(jié)構(gòu)可能如下圖,既包含ja

    2024年02月11日
    瀏覽(22)
  • 【spark】java類在spark中的傳遞,scala object在spark中的傳遞

    記錄一個(gè)比較典型的問題,先講一下背景,有這么一個(gè)用java寫的類 然后在spark中使用的時(shí)候: 原因: scala的object對應(yīng)的就是java的靜態(tài)成員,可以反過來理解java的所有靜態(tài)成員可被抽取成伴生對象(雖然現(xiàn)實(shí)中是scala最終編譯成java)。以上面的JavaClass0 例子可理解為等價(jià)的

    2024年02月11日
    瀏覽(22)
  • 如何在Spark Scala/Java應(yīng)用中調(diào)用Python腳本

    本文將介紹如何在 Spark scala 程序中調(diào)用 Python 腳本,Spark java程序調(diào)用的過程也大體相同 1.PythonRunner 對于運(yùn)行與 JVM 上的程序(即Scala、Java程序),Spark 提供了 PythonRunner 類。只需要調(diào)用PythonRunner 的main方法,就可以在Scala或Java程序中調(diào)用Python腳本。在實(shí)現(xiàn)上,PythonRunner 基于

    2023年04月24日
    瀏覽(16)
  • 大數(shù)據(jù)Spark SparkSession的3種創(chuàng)建方式 Scala語言實(shí)現(xiàn)

    SparkSession是Apache Spark 2.0版本引入的一個(gè)編程接口,用于與Spark進(jìn)行交互。它是Spark應(yīng)用程序的入口點(diǎn),提供了一種方便的方式來創(chuàng)建DataFrame、DataSet和SQLContext等數(shù)據(jù)結(jié)構(gòu),并且可以配置各種Spark應(yīng)用程序的選項(xiàng)。SparkSession還管理了Spark應(yīng)用程序的運(yùn)行環(huán)境,包括Spark集群的連接,

    2023年04月20日
    瀏覽(20)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包