雲小課|MRS基礎原理之CarbonData入門

来源:https://www.cnblogs.com/huaweiyun/archive/2022/10/29/16838303.html
-Advertisement-
Play Games

閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。 摘要:CarbonData是一種新型的Apache Hadoop本地文件格式,使用先進的列式存儲、索引、壓縮和編碼技術,以提 ...


閱識風雲是華為雲信息大咖,擅長將複雜信息多元化呈現,其出品的一張圖(雲圖說)、深入淺出的博文(雲小課)或短視頻(雲視廳)總有一款能讓您快速上手華為雲。更多精彩內容請單擊此處。

摘要: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)更多功能吧!猛戳這裡

 

點擊關註,第一時間瞭解華為雲新鮮技術~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在.NET開發生態中,我們以前開發定時任務都是用的Quartz.NET完成的。在這篇文章里,記錄一下另一個很強大的定時任務框架的使用方法:Hangfire。兩個框架各自都有特色和優勢,可以根據參考文章里張隊的那篇文章對兩個框架的對比來進行選擇。 引入Nuget包和配置 引入Hangfire相關的Nu ...
  • 我們開發一個系統,在保證風格統一、代碼強壯、可讀性強等基礎上,還能夠結合代碼生成工具快速開發相關後端,以及各種前端界面的,無疑是非常好的,既保證了項目的代碼質量,又能夠極大的提高開發效率。代碼生成工具Database2Sharp是在完善的開發項目上,抽取出數據變化的部分,通過演繹、歸納、反覆演繹和歸... ...
  • 註:快手小程式審核規範中寫明拒絕純webview小程式, 即無法通過以下步驟上架快手小程式, Smobiler只能作為快手小程式開發的一個補充, 具體見 快手-小程式審核規範 Step.1 註冊快手開發者平臺 ,登錄之後點擊創建 創建完成之後再點擊應用進入 點擊填寫,填寫小程式信息 Step.2 下 ...
  • 在一個應用系統的開發框架中,往往很多地方需要用到緩存的處理,有些地方是為了便於記錄用戶的數據,有些地方是為了提高系統的響應速度,如有時候我們在發送一個簡訊驗證碼的時候,可以在緩存中設置幾分鐘的過期時間,這樣驗證簡訊驗證碼的時候,就會自動判斷是否過期了。本篇隨筆結合CSRedis的使用,介紹如何實現緩... ...
  • 根據MSDN的介紹,自己對一些基本結構做一些翻譯,幫助自己理解。 驅動對象 DRIVER_OBJECT typedef struct _DRIVER_OBJECT { CSHORT Type; CSHORT Size; PDEVICE_OBJECT DeviceObject; ULONG Flags ...
  • Attack Lab 參考手冊 一共六個文件 cookie.txt 一個8位16進位數,作為攻擊的特殊標誌符 farm.c 在ROP攻擊中作為gadgets的產生源 ctarget 代碼註入攻擊的目標文件 rtarget ROP攻擊的目標文件 hex2row 將16進位數轉化為攻擊字元,因為有些字元 ...
  • 沁恆最近推出的低價CH32V003系列, 基於青稞RISC-V2A內核, 48MHz主頻, 2KB SRAM, 16KB Flash, 工作電壓相容3.3V和5V. Win10下的開發環境是比較簡單的, 軟體就是MounRiver, 版本v1.82, 軟體集成了代碼編輯, 編譯環境和燒錄工具. 直接... ...
  • 好家伙,又到了修bug的環節,(深嘆一口氣) 好了,來看報錯 2022-10-29 23:27:52.155 WARN 15068 [nio-8011-exec-2] o.h.engine.jdbc.spi.SqlExceptionHelper : SQL Error: 1364, SQLState ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...