閱識風云是華為云資訊大咖,擅長將復雜資訊多元化呈現,其出品的一張圖(云圖說)、深入淺出的博文(云小課)或短視頻(云視廳)總有一款能讓您快速上手華為云,更多精彩內容請單擊此處,
摘要:CarbonData是一種新型的Apache Hadoop本地檔案格式,使用先進的列式存盤、索引、壓縮和編碼技術,以提高計算效率,有助于加速超過PB數量級的資料查詢,可用于更快的互動查詢,同時,CarbonData也是一種將資料源與Spark集成的高性能分析引擎,
本文分享自華為云社區《【云小課】EI第40課 MRS基礎原理之CarbonData入門》,作者:Hello EI ,
CarbonData是一種新型的Apache Hadoop本地檔案格式,使用先進的列式存盤、索引、壓縮和編碼技術,以提高計算效率,有助于加速超過PB數量級的資料查詢,可用于更快的互動查詢,同時,CarbonData也是一種將資料源與Spark集成的高性能分析引擎,
使用CarbonData的目的是對大資料即席查詢提供超快速回應,從根本上說,CarbonData是一個OLAP引擎,采用類似于RDBMS中的表來存盤資料,用戶可將大量(10TB以上)的資料匯入以CarbonData格式創建的表中,CarbonData將以壓縮的多維索引列格式自動組織和存盤資料,資料被加載到CarbonData后,就可以執行即席查詢,CarbonData將對資料查詢提供秒級回應,
CarbonData將資料源集成到Spark生態系統,用戶可使用Spark SQL執行資料查詢和分析,也可以使用Spark提供的第三方工具JDBCServer連接到Spark SQL,
本文以從CSV檔案加載資料到CarbonData Table為例,介紹創建CarbonData table、加載資料,以及查詢資料的快速入門流程,
使用CarbonData需要安裝Spark2x組件,并安裝Spark2x的客戶端,
- MRS集群的創建可參考MRS快速入門中的“創建集群”章節,例如購買一個MRS 3.1.0版本集群,
- 安裝Spark2x客戶端,可參考MRS用戶指南中的“安裝客戶端”章節,例如客戶端安裝目錄為:“/opt/client”,
- 對于安全模式的集群(開啟了Kerberos認證),在使用CarbonData時,需要創建一個具有訪問CarbonData權限的用戶,可參考MRS用戶指南中的“創建用戶”章節,用戶組選擇hadoop和hive,主組選擇hadoop,例如創建人機用戶“testuser”,
準備CSV檔案
準備加載到CarbonData Table的CSV檔案,
1.在本地準備CSV檔案,檔案名為:test.csv,
13418592122,1001,MAC地址,2017-10-23 15:32:30,2017-10-24 15:32:30,62.50,74.56 13418592123,1002,MAC地址,2017-10-23 16:32:30,2017-10-24 16:32:30,17.80,76.28 13418592124,1003,MAC地址,2017-10-23 17:32:30,2017-10-24 17:32:30,20.40,92.94 13418592125,1004,MAC地址,2017-10-23 18:32:30,2017-10-24 18:32:30,73.84,8.58 13418592126,1005,MAC地址,2017-10-23 19:32:30,2017-10-24 19:32:30,80.50,88.02 13418592127,1006,MAC地址,2017-10-23 20:32:30,2017-10-24 20:32:30,65.77,71.24 13418592128,1007,MAC地址,2017-10-23 21:32:30,2017-10-24 21:32:30,75.21,76.04 13418592129,1008,MAC地址,2017-10-23 22:32:30,2017-10-24 22:32:30,63.30,94.40 13418592130,1009,MAC地址,2017-10-23 23:32:30,2017-10-24 23:32:30,95.51,50.17 13418592131,1010,MAC地址,2017-10-24 00:32:30,2017-10-25 00:32:30,39.62,99.13
2.將CSV檔案匯入客戶端節點,例如“/opt”目錄下,
3.進入客戶端目錄,上傳CSV檔案到HDFS的“/data”目錄下:
cd /opt/client source ./bigdata_env source ./Spark2x/component_env kinit sparkuser hdfs dfs -put /opt/test.csv /data/
連接到CarbonData
在對CarbonData進行任何一種操作之前,首先需要連接到CarbonData,
- 使用Spark SQL或Spark shell連接到Spark并執行Spark SQL命令,
- 開啟JDBCServer并使用JDBC客戶端(例如,Spark Beeline)連接,
cd ./Spark2x/spark/bin
./spark-beeline
創建CarbonData Table
在Spark Beeline被連接到JDBCServer之后,需要創建一個CarbonData table用于加載資料和執行查詢操作,
例如下面是創建一個簡單的表的命令:
create table x1 (imei string, deviceInformationId int, mac string, productdate timestamp, updatetime timestamp, gamePointId double, contractNumber double) STORED AS carbondata TBLPROPERTIES ('SORT_COLUMNS'='imei,mac');
命令執行結果如下:
+---------+ | Result | +---------+ +---------+ No rows selected (1.093 seconds)
加載資料到CarbonData Table
創建CarbonData table之后,可以從CSV檔案加載資料到所創建的表中,
表的列名需要與CSV檔案的列名匹配,
LOAD DATA inpath 'hdfs://hacluster/data/test.csv' into table x1 options('DELIMITER'=',', 'QUOTECHAR'='"','FILEHEADER'='imei, deviceinformationid,mac, productdate,updatetime, gamepointid,contractnumber');
其中,“test.csv”為準備的CSV檔案,“x1”為示例的表名,
命令執行結果如下:
+------------+ |Segment ID | +------------+ |0 | +------------+ No rows selected (3.039 seconds)
在CarbonData中查詢資料
創建CarbonData table并加載資料之后,可以執行所需的資料查詢操作,以下為一些查詢操作舉例,
獲取記錄數
為了獲取在CarbonData table中的記錄數,可以運行以下命令,
select count(*) from x1;
使用Groupby查詢
為了獲取不重復的deviceinformationid記錄數,可以運行以下命令,
select deviceinformationid,count (distinct deviceinformationid) from x1 group by deviceinformationid;
用Filter查詢
為了獲取特定deviceinformationid的記錄,可以運行以下命令,
select * from x1 where deviceinformationid='1010';
在執行資料查詢操作后,如果查詢結果中某一列的結果含有中文字等非英文字符,會導致查詢結果中的列不能對齊,這是由于不同語言的字符在顯示時所占的字寬不盡相同,
在Spark-shell上使用CarbonData
創建CarbonData table并加載資料之后,可以執行所需的查詢操作,例如filters,groupby等,
用戶若需要在Spark-shell上使用CarbonData,需通過如下方式創建CarbonData Table,加載資料到CarbonData Table和在CarbonData中查詢資料的操作,
spark.sql("CREATE TABLE x2(imei string, deviceInformationId int, mac string, productdate timestamp, updatetime timestamp, gamePointId double, contractNumber double) STORED AS carbondata") spark.sql("LOAD DATA inpath 'hdfs://hacluster/data/x1_without_header.csv' into table x2 options('DELIMITER'=',', 'QUOTECHAR'='\"','FILEHEADER'='imei, deviceinformationid,mac, productdate,updatetime, gamepointid,contractnumber')") spark.sql("SELECT * FROM x2").show
好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/523143.html
標籤:其他
