Spark處理HDFS數(shù)據(jù)树埠,并將結(jié)果存儲在Hive中

接昨天未完待續(xù)糠馆,繼續(xù):

首先,我要完成功能是:將下面的電影的links數(shù)據(jù)怎憋,在Spark上處理又碌,處理結(jié)果存入到Hive中


image.png

這個是最后成功的圖


image

功能流程如下圖:


image.png

涉及的代碼如下:

object ETL {
  def main(args: Array[String]): Unit = {
    val localClusterURL = "local[2]"
    val clusterMasterURL = "spark://s1:7077"
    val conf = new SparkConf().setAppName("ETL").setMaster(clusterMasterURL)
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    val hc = new HiveContext(sc)
    import sqlContext.implicits._
    hc.sql("use moive_recommend")

    // 設置RDD的partition的數(shù)量一般以集群分配給應用的CPU核數(shù)的整數(shù)倍為宜。
    val minPartitions = 8

    val links = sc.textFile(args(0),minPartitions).filter{ !_.endsWith(",")}.map(_.split(","))
      .map(x =>Links(x(0).trim.toInt,x(1).trim().toInt,x(2).trim().toInt)).toDF()

    links.write.mode(SaveMode.Overwrite).parquet("/home/spark/temp/moiveRec/links")

    hc.sql("drop table if exists links")
    hc.sql("create table if not exists links(moiveId int,imdbId int,tmdbId int) stored as parquet" )
    hc.sql("load data inpath '/home/spark/temp/moiveRec/links' overwrite into table links")
  }
}

從一開始绊袋,我就有一個疑惑:

如何建立Windows毕匀、Linux、HDFS癌别、Spark皂岔、Hive、MySql間的聯(lián)系展姐,進行通訊?

后面所有的行為都是為了解決這個問題躁垛。

1 Windows和Linux間的聯(lián)系

用的這個剖毯,不多說,百度教馆。


image.png

所有的文件逊谋、jar都是通過這個與Linux交互。

2 Windows和Spark交互

需要將最開始的代碼土铺,打成jar包胶滋,通過上面的WinSCP傳入spark的lib(自己指定)下。
而IDEA編譯Scala代碼需要在Maven中做如下配置

<build>
        <sourceDirectory>src/main/java</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>net.alchim31.maven</groupId>
                <artifactId>scala-maven-plugin</artifactId>
                <version>3.2.2</version>
                <configuration>
                    <recompileMode>incremental</recompileMode>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>compile</goal>
                            <goal>testCompile</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <archive>
                        <manifest>
                            <mainClass>org.brave.spark.streaming.Producer</mainClass>
                        </manifest>
                    </archive>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后舒憾,做如圖右側(cè)選擇镀钓,將項目打成左側(cè)jar包


image.png

3 HDFS和Spark交互

接下來到了比較困難的部分,主要是下面5行代碼镀迂。
敲黑板啦6〗Α!探遵!

val links = sc.textFile(args(0),minPartitions).filter{ !_.endsWith(",")}.map(_.split(","))
      .map(x =>Links(x(0).trim.toInt,x(1).trim().toInt,x(2).trim().toInt)).toDF()

links.write.mode(SaveMode.Overwrite).parquet("/home/spark/temp/moiveRec/links")

hc.sql("drop table if exists links")
hc.sql("create table if not exists links(moiveId int,imdbId int,tmdbId int) stored as parquet" )
hc.sql("load data inpath '/home/spark/temp/moiveRec/links' overwrite into table links")

我最終運行的命令如下:


image.png

最后一部分參數(shù)窟赏,是links.txt文件的地址,文件存在Linux上箱季,也上傳在HDFS上

/home/spark/temp/moiveRec/links.txt

我不懂:

怎么將HDFS的數(shù)據(jù)傳入到spark上運行涯穷?或者說怎么區(qū)分到底傳入的是Linux的數(shù)據(jù)還是HDFS數(shù)據(jù)?

寫HDFS會報錯藏雏,如果寫Linux本地的數(shù)據(jù)拷况,后面的

hc.sql("drop table if exists links")
hc.sql("create table if not exists links(moiveId int,imdbId int,tmdbId int) stored as parquet" )
hc.sql("load data inpath '/home/spark/temp/moiveRec/links' overwrite into table links")

語句會找不到數(shù)據(jù)庫,無法新建數(shù)據(jù)表掘殴。

于是問題變?yōu)椋篠park如何與Hive交互(最難的地方赚瘦,也是突破點)

4 Hive與Mysql交互

要解決這個問題,首先還要解決Hive與Mysql間的交互問題奏寨。詳情見:
配置一臺Hive + Mysql元數(shù)據(jù)庫

5 Spark和Hive交互

OK起意,最后一步的交互。

首先病瞳,配置一臺Hive + Mysql元數(shù)據(jù)庫里面最后關于

image.png

講述不對揽咕,需要這一部分的配置,不能為空套菜,原因如下:


image.png

https://www.cnblogs.com/linbingdong/p/5829369.html

最后配置如下:

image.png

繼續(xù)啟動Hive亲善,報錯如下:


image.png

解決方法:


image.png

https://blog.csdn.net/blueheart20/article/details/38460541

到此,Hive已經(jīng)配置好了Metastore逗柴。

最終的關鍵問題的解決還是依靠官方文檔

image.png

就是說蛹头,要把hive-site.xml,core-site.xml,hdfs-site.xml都放入到Spark的conf目錄下掘而。

image.png

還需要將mysql的驅(qū)動放入到lib目錄下(高版本是jars目錄)

image.png

成功

最終再次運行下面代碼


image.png

沒在報錯,成功寫入到Hive中于购。


總結(jié):遇到問題時袍睡,要善于對其轉(zhuǎn)化,轉(zhuǎn)化為能用簡單的keywords描述肋僧。然后帶著keywords:(1)首先去官網(wǎng)查斑胜;(2)然后是搜索;

END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嫌吠,一起剝皮案震驚了整個濱河市止潘,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辫诅,老刑警劉巖凭戴,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異炕矮,居然都是意外死亡么夫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門肤视,熙熙樓的掌柜王于貴愁眉苦臉地迎上來档痪,“玉大人,你說我怎么就攤上這事邢滑「” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵困后,是天一觀的道長乐纸。 經(jīng)常有香客問我,道長操灿,這世上最難降的妖魔是什么锯仪? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮趾盐,結(jié)果婚禮上庶喜,老公的妹妹穿的比我還像新娘。我一直安慰自己救鲤,他們只是感情好久窟,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本缠,像睡著了一般斥扛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天稀颁,我揣著相機與錄音芬失,去河邊找鬼。 笑死匾灶,一個胖子當著我的面吹牛棱烂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播阶女,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颊糜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了秃踩?” 一聲冷哼從身側(cè)響起衬鱼,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎憔杨,沒想到半個月后鸟赫,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡消别,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年惯疙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妖啥。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡霉颠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出荆虱,到底是詐尸還是另有隱情蒿偎,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布怀读,位于F島的核電站诉位,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏菜枷。R本人自食惡果不足惜苍糠,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啤誊。 院中可真熱鬧岳瞭,春花似錦、人聲如沸蚊锹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牡昆。三九已至姚炕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柱宦。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工些椒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人掸刊。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓摊沉,卻偏偏與公主長得像,于是被迫代替她去往敵國和親痒给。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容