spark讀寫HBase之使用hortonworks的開源框架shc(一):源碼編譯以及測試工程創(chuàng)建


軟件準備


1. 編譯源碼包

(1) 解壓源碼包耍休,修改項目根目錄下的pom文件

根據自己使用的版本修改各組件的版本號催跪,以下是我修改后的pom文件:

<groupId>com.hortonworks</groupId>
<artifactId>shc</artifactId>
<version>spark-2.3.0-hbase-1.2.6</version>
<packaging>pom</packaging>

<properties>
    <spark.version>2.3.0</spark.version>
    <hbase.version>1.2.6</hbase.version>
    <phoenix.version>4.14.0-HBase-1.2</phoenix.version>
    <java.version>1.8</java.version>
</properties>

說明:

  • 以上內容只是我修改的部分害幅,沒有修改的我沒有貼出來
  • 我修改了version诚亚,那么在子模塊的pom中牵署,也要修改為一樣的version

以下是我修改后的兩個子模塊core和examples中的pom文件闹究,只修改了version

<parent>
    <groupId>com.hortonworks</groupId>
    <artifactId>shc</artifactId>
    <version>spark-2.3.0-hbase-1.2.6</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<artifactId>shc-core</artifactId>
<version>spark-2.3.0-hbase-1.2.6</version>
<packaging>jar</packaging>
<name>HBase Spark Connector Project Core</name>

<parent>
    <groupId>com.hortonworks</groupId>
    <artifactId>shc</artifactId>
    <version>spark-2.3.0-hbase-1.2.6</version>
    <relativePath>../pom.xml</relativePath>
</parent>

<artifactId>shc-examples</artifactId>
<version>spark-2.3.0-hbase-1.2.6</version>
<packaging>jar</packaging>
<name>HBase Spark Connector Project Examples</name>

(2) 編譯源碼

在源碼包根目錄下執(zhí)行mvn命令:

mvn install -DskipTests

執(zhí)行成功后,你的本地maven倉庫中已經有了這個項目的jar包

2. 創(chuàng)建測試shc的maven工程

(1) 新建maven工程珠插,在pom中引入我們編譯好的shc-core的依賴

注意惧磺,我們只需要shc-core的依賴

<dependency>
    <groupId>com.hortonworks</groupId>
    <artifactId>shc-core</artifactId>
    <version>spark-2.3.0-hbase-1.2.6</version>
</dependency>

(2) 導入spark相關的依賴,并解決依賴沖突

# 以下spark的依賴包排除了hadoop-client包捻撑,因為與shc-core中的hadoop-client有版本沖突

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming_2.11</artifactId>
    <version>2.3.0</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-streaming-kafka-0-10_2.11</artifactId>
    <version>2.3.0</version>
</dependency>

# 手動引入hadoop-client的依賴
<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.7.6</version>
</dependency>

這里選擇引入hadoop2.7.6版本的hadoop-client是因為2.7版本的hadoop可以兼容全部版本的hbase磨隘,下圖為hbase官網的hadoop與hbase各版本的兼容性對照表:


(3) 引入hbase相關的依賴并解決依賴沖突

這里只需要排除掉沖突的依賴就可以了

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>1.2.6</version>
    <exclusions>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-auth</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
        </exclusion>
        <exclusion>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-mapreduce-client-core</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-server</artifactId>
    <version>1.2.6</version>
    <exclusions>
        <exclusion>
            <groupId>io.netty</groupId>
            <artifactId>netty-all</artifactId>
        </exclusion>
    </exclusions>
</dependency>

(4) 把hdfs-site.xml、core-site.xml和hbase-site.xml放到項目的resources目錄下

(5) 其他

  • 我在ideal中創(chuàng)建的這個maven工程顾患,加入了scala-sdk番捂,不再贅述
  • 修改了項目架構,加入了scala主程序文件夾和測試文件夾


  • 配置了maven相關的插件江解,加入了scala編譯插件
<build>
    <plugins>

        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.4.2</version>
            <executions>
                <execution>
                    <id>scala-compile-first</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>add-source</goal>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <scalaVersion>2.11.8</scalaVersion>
                <recompileMode>incremental</recompileMode>
                <useZincServer>true</useZincServer>
                <args>
                    <arg>-unchecked</arg>
                    <arg>-deprecation</arg>
                    <arg>-feature</arg>
                </args>
                <javacArgs>
                    <javacArg>-source</javacArg>
                    <javacArg>1.8</javacArg>
                    <javacArg>-target</javacArg>
                    <javacArg>1.8</javacArg>
                </javacArgs>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.0</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <skip>true</skip>
                <source>1.8</source>
                <target>1.8</target>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.1.0</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.1.1</version>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                    <configuration>
                        <!-- 設置jar包的主類 -->
                        <!--
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.bonc.rdpe.spark.hbase.SparkToHBase</mainClass>
                            </transformer>
                        </transformers>
                        -->
                        <filters>
                            <filter>
                                <artifact>*:*</artifact>
                                <excludes>
                                    <exclude>META-INF/*.SF</exclude>
                                    <exclude>META-INF/*.DSA</exclude>
                                    <exclude>META-INF/*.RSA</exclude>
                                </excludes>
                            </filter>
                        </filters>
                    </configuration>
                </execution>
            </executions>
        </plugin>

    </plugins>
</build>

至此设预,開始測試shc之前的全部準備工作就做好了!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末犁河,一起剝皮案震驚了整個濱河市鳖枕,隨后出現的幾起案子,更是在濱河造成了極大的恐慌桨螺,老刑警劉巖宾符,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異灭翔,居然都是意外死亡魏烫,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來则奥,“玉大人,你說我怎么就攤上這事狭园《链Γ” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵唱矛,是天一觀的道長罚舱。 經常有香客問我,道長绎谦,這世上最難降的妖魔是什么管闷? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮窃肠,結果婚禮上包个,老公的妹妹穿的比我還像新娘。我一直安慰自己冤留,他們只是感情好碧囊,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著纤怒,像睡著了一般糯而。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上泊窘,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天熄驼,我揣著相機與錄音,去河邊找鬼烘豹。 笑死瓜贾,一個胖子當著我的面吹牛,可吹牛的內容都是我干的携悯。 我是一名探鬼主播阐虚,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼蚌卤!你這毒婦竟也來了实束?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤逊彭,失蹤者是張志新(化名)和其女友劉穎咸灿,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體侮叮,經...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡避矢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片审胸。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡亥宿,死狀恐怖,靈堂內的尸體忽然破棺而出砂沛,到底是詐尸還是另有隱情烫扼,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布碍庵,位于F島的核電站映企,受9級特大地震影響,放射性物質發(fā)生泄漏静浴。R本人自食惡果不足惜堰氓,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望苹享。 院中可真熱鬧双絮,春花似錦、人聲如沸得问。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽椭赋。三九已至抚岗,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間哪怔,已是汗流浹背宣蔚。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留认境,地道東北人胚委。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像叉信,于是被迫代替她去往敵國和親亩冬。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349

推薦閱讀更多精彩內容