EMR-3.42及后續版本或EMR-5.8.0及后續版本的集群,支持OSS-HDFS(JindoFS服務)作為數據存儲,提供緩存加速服務和Ranger鑒權功能,使得在Hive或Spark等大數據ETL場景將獲得更好的性能和HDFS平遷能力。本文為您介紹E-MapReduce(簡稱EMR)Hive或Spark如何操作OSS-HDFS。
前提條件
- 已創建EMR-3.42.0及以上版本或EMR-5.8.0及以上版本的集群。具體步驟,請參見創建集群。
- 已開通并授權訪問OSS-HDFS服務。具體操作,請參見開通并授權訪問OSS-HDFS服務。
背景信息
OSS-HDFS服務是一款云原生數據湖存儲產品,基于統一的元數據管理能力,在完全兼容HDFS文件系統接口的同時,提供充分的POSIX能力支持,能更好的滿足大數據和AI領域豐富多樣的數據湖計算場景,詳細信息請參見OSS-HDFS服務概述。
操作步驟
說明 本示例以Hive操作OSS-HDFS為例介紹。您也可以參照此方式使用Spark操作OSS-HDFS。
- 登錄集群,具體操作請參見登錄集群。
創建指向OSS-HDFS的Hive表。
- 執行以下命令,進入Hive命令行。
hive
執行以下命令,創建指向OSS-HDFS的數據庫。
CREATE DATABASE if not exists dw LOCATION 'oss://<yourBucketName>.<yourBucketEndpoint>/<path>';
說明上述命令中的
dw
為數據庫名,<path>
為任意路徑,<yourBucketName>.<yourBucketEndpoint>
為獲取到的HDFS服務的域名。- 本示例使用OSS-HDFS的域名作為路徑的前綴。如果您希望只使用Bucket名稱來指向OSS-HDFS,則可以配置Bucket級別的Endpoint或全局Endpoint,具體操作請參見附錄一:配置Endpoint的其他方式。
- 執行以下命令,使用新創建的數據庫。
use dw;
- 執行以下命令,在新建的數據庫下創建表。
CREATE TABLE IF NOT EXISTS employee(eid int, name String,salary String,destination String) COMMENT 'Employee details';
- 執行以下命令,進入Hive命令行。
- 向表中插入數據。使用INSERT INTO語句向表寫入數據,該語句會產生MapReduce作業。
INSERT INTO employee(eid, name, salary, destination) values(1, 'liu hua', '100.0', '');
- 驗證表數據。
SELECT * FROM employee WHERE eid = 1;
返回信息中會包含插入的數據。OK 1 liu hua 100.0 Time taken: 12.379 seconds, Fetched: 1 row(s)
文檔內容是否對您有幫助?