本篇文章為大家展示了Spark On MaxCompute如何訪問Phonix數(shù)據(jù),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供湯陰網(wǎng)站建設、湯陰做網(wǎng)站、湯陰網(wǎng)站設計、湯陰網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、湯陰企業(yè)網(wǎng)站模板建站服務,10多年湯陰做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。
hbase主要版本為2.0與1.1,這邊選擇對應hbase對應的版本為1.1
Hbase與Hbase2.0版本的區(qū)別
HBase1.1版本
1.1版本基于HBase社區(qū)1.1.2版本開發(fā)。
HBase2.0版本
2.0版本是基于社區(qū)2018年發(fā)布的HBase2.0.0版本開發(fā)的全新版本。同樣,在此基礎上,做了大量的改進和優(yōu)化,吸收了眾多阿里內(nèi)部成功經(jīng)驗,比社區(qū)HBase版本具有更好的穩(wěn)定性和性能。
確保測試聯(lián)通性的可以方便可行,該hbase的VPCId,vsWitchID盡量與購買的獨享集成資源組的為一致的。
根據(jù)文檔鏈接選擇對應的DataWorks的region下的白名單進行添加。
打開數(shù)據(jù)庫鏈接的按鈕,可以查看到Hbase的主版本以及Hbase的專有網(wǎng)絡訪問地址,以及是否開通公網(wǎng)訪問的方式進行連接。
根據(jù)hbase的版本為1.1選擇Phonix的版本為4.12.0根據(jù)文檔下載對應的客戶端文件ali-phoenix-4.12.0-AliHBase-1.1-0.9.tar.gz
登陸客戶端執(zhí)行命令
./bin/sqlline.py 172.16.0.13,172.16.0.15,172.16.0.12:2181
創(chuàng)建表:
CREATE TABLE IF NOT EXISTS users_phonix ( id INT , username STRING, password STRING ) ;
插入數(shù)據(jù):
UPSERT INTO users (id, username, password) VALUES (1, 'admin', 'Letmein');
在客戶端執(zhí)行命令,查看當前表與數(shù)據(jù)是否上傳成功
select * from users;
在IDEA按照對應得Pom文件進行配置本地得開發(fā)環(huán)境,將代碼涉及到得配置信息填寫完整,進行編寫測試,這里可以先使用Hbase得公網(wǎng)訪問鏈接進行測試,代碼邏輯驗證成功后可調(diào)整配置參數(shù),具體代碼如下
package com.git.phonix import org.apache.hadoop.conf.Configuration import org.apache.spark.sql.SparkSession import org.apache.phoenix.spark._ /** * 本實例適用于Phoenix 4.x版本 */ object SparkOnPhoenix4xSparkSession { def main(args: Array[String]): Unit = { //HBase集群的ZK鏈接地址。 //格式為:xxx-002.hbase.rds.aliyuncs.com,xxx-001.hbase.rds.aliyuncs.com,xxx-003.hbase.rds.aliyuncs.com:2181 val zkAddress = args(0) //Phoenix側(cè)的表名,需要在Phoenix側(cè)提前創(chuàng)建。Phoenix表創(chuàng)建可以參考:https://help.aliyun.com/document_detail/53716.html?spm=a2c4g.11186623.4.2.4e961ff0lRqHUW val phoenixTableName = args(1) //Spark側(cè)的表名。 val ODPSTableName = args(2) val sparkSession = SparkSession .builder() .appName("SparkSQL-on-MaxCompute") .config("spark.sql.broadcastTimeout", 20 * 60) .config("spark.sql.crossJoin.enabled", true) .config("odps.exec.dynamic.partition.mode", "nonstrict") //.config("spark.master", "local[4]") // 需設置spark.master為local[N]才能直接運行,N為并發(fā)數(shù) .config("spark.hadoop.odps.project.name", "***") .config("spark.hadoop.odps.access.id", "***") .config("spark.hadoop.odps.access.key", "***") //.config("spark.hadoop.odps.end.point", "http://service.cn.maxcompute.aliyun.com/api") .config("spark.hadoop.odps.end.point", "http://service.cn-beijing.maxcompute.aliyun-inc.com/api") .config("spark.sql.catalogImplementation", "odps") .getOrCreate() //第一種插入方式 var df = sparkSession.read.format("org.apache.phoenix.spark").option("table", phoenixTableName).option("zkUrl",zkAddress).load() df.show() df.write.mode("overwrite").insertInto(ODPSTableName) } }
pom文件中分為Spark依賴,與ali-phoenix-spark相關的依賴,由于涉及到ODPS的jar包,會在集群中引起jar沖突,所以要將ODPS的包排除掉
4.0.0 2.3.0 3.3.8-public 2.11.8 2.11 4.12.0-HBase-1.1 com.aliyun.odps Spark-Phonix 1.0.0-SNAPSHOT jar org.jpmml pmml-model 1.3.8 org.jpmml pmml-evaluator 1.3.10 org.apache.spark spark-core_${scala.binary.version} ${spark.version} provided org.scala-lang scala-library org.scala-lang scalap org.apache.spark spark-sql_${scala.binary.version} ${spark.version} provided org.apache.spark spark-mllib_${scala.binary.version} ${spark.version} provided org.apache.spark spark-streaming_${scala.binary.version} ${spark.version} provided com.aliyun.odps cupid-sdk ${cupid.sdk.version} provided com.aliyun.phoenix ali-phoenix-core 4.12.0-AliHBase-1.1-0.8 com.aliyun.odps odps-sdk-mapred com.aliyun.odps odps-sdk-commons com.aliyun.phoenix ali-phoenix-spark 4.12.0-AliHBase-1.1-0.8 com.aliyun.phoenix ali-phoenix-core org.apache.maven.plugins maven-shade-plugin 2.4.3 package shade false true *:* *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA **/log4j.properties reference.conf META-INF/services/org.apache.spark.sql.sources.DataSourceRegister net.alchim31.maven scala-maven-plugin 3.3.2 scala-compile-first process-resources compile scala-test-compile-first process-test-resources testCompile
CREATE TABLE IF NOT EXISTS users_phonix ( id INT , username STRING, password STRING ) ;
在IDEA打包要打成shaded包,將所有的依賴包,打入jar包中,由于DatadWork界面方式上傳jar包有50M的限制,因此采用MaxCompute客戶端進行jar包
進入DataWorks界面選擇左側(cè)資源圖標,選擇對應的環(huán)境位開發(fā)換進,輸入刪除文件時的文件名稱進行搜索,列表中展示該資源已經(jīng)上傳成,點擊提交到數(shù)據(jù)開發(fā)
點擊提交按鈕
其中的配置vpcList文件的配置信息如下,可具體根據(jù)個人hbase的鏈接,進行配置
{ "regionId":"cn-beijing", "vpcs":[ { "vpcId":"vpc-2ze7cqx2bqodp9ri1vvvk", "zones":[ { "urls":[ { "domain":"172.16.0.12", "port":2181 }, { "domain":"172.16.0.13", "port":2181 }, { "domain":"172.16.0.15", "port":2181 }, { "domain":"172.16.0.14", "port":2181 }, { "domain":"172.16.0.12", "port":16000 }, { "domain":"172.16.0.13", "port":16000 }, { "domain":"172.16.0.15", "port":16000 }, { "domain":"172.16.0.14", "port":16000 }, { "domain":"172.16.0.12", "port":16020 }, { "domain":"172.16.0.13", "port":16020 }, { "domain":"172.16.0.15", "port":16020 }, { "domain":"172.16.0.14", "port":16020 } ] } ] } ] }
Spark任務提交任務的配置參數(shù),主類,以及對應的參數(shù)
該參數(shù)主要為3個參數(shù)第一個為Phonix的鏈接,第二個為Phonix的表名稱,第三個為傳入的MaxCompute表
點擊冒煙測試按鈕,可以看到任務執(zhí)行成功
在臨時查詢節(jié)點中執(zhí)行查詢語句,可以得到數(shù)據(jù)已經(jīng)寫入MaxCompute的表中
使用Spark on MaxCompute訪問Phonix的數(shù)據(jù),并將數(shù)據(jù)寫入到MaxCompute的表中經(jīng)過實踐,該方案時可行的。但在實踐的時有幾點注意事項:
1.結(jié)合實際使用情況選擇對應的Hbase以及Phonix版本,對應的版本一致,并且所使用的客戶端,以及代碼依賴都會有所改變。
2.使用公網(wǎng)在IEAD進行本地測試,要注意Hbase白名單,不僅要設置DataWorks的白名單,還需將自己本地的地址加入到白名單中。
3.代碼打包時需要將pom中的依賴關系進行梳理,避免ODPS所存在的包在對應的依賴中,進而引起jar包沖突,并且打包時打成shaded包,避免缺失遺漏對應的依賴。
上述內(nèi)容就是Spark On MaxCompute如何訪問Phonix數(shù)據(jù),你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。