使用EMR
使用EMR的JindoFS緩存模式連接OSS數(shù)據(jù)湖。
背景信息
您可以使用EMR的JindoFS緩存模式或者JindoFS塊模式連接OSS數(shù)據(jù)湖。
緩存模式(Cache)主要兼容原生OSS存儲方式,文件以對象的形式存儲在OSS上,每個文件根據(jù)實際訪問情況會在本地進(jìn)行緩存,提升EMR集群內(nèi)訪問OSS的效率,同時兼容了OSS原有文件形式,數(shù)據(jù)訪問上能夠與其他OSS客戶端完全兼容。詳情請參見JindoFS緩存模式使用說明。
塊存儲模式(Block)提供了最為高效的數(shù)據(jù)讀寫能力和元數(shù)據(jù)訪問能力。數(shù)據(jù)以Block形式存儲在后端存儲OSS上,本地提供緩存加速,元數(shù)據(jù)則由本地Namespace服務(wù)維護(hù),提供高效的元數(shù)據(jù)訪問性能。詳情請參見JindoFS塊存儲模式使用說明。
前提條件
已創(chuàng)建EMR集群,詳情請參見創(chuàng)建集群。
創(chuàng)建集群時,請注意如下事項:
創(chuàng)建EMR集群和OSS屬于同一個阿里云賬號,且建議EMR集群和OSS Bucket處于同一地域。
創(chuàng)建集群時,請打開掛載公網(wǎng)和遠(yuǎn)程登錄開關(guān),將集群掛載到公網(wǎng),用于Shell遠(yuǎn)程登錄服務(wù)器。
bigboot與smartdata為后續(xù)配置相關(guān)服務(wù),如果默認(rèn)未選中,請選中bigboot與smartdata服務(wù)。
已創(chuàng)建數(shù)據(jù)投遞任務(wù),詳情請參見快速入門。
操作步驟
使用EMR的jindoFS緩存模式連接OSS和啟用緩存,詳情請參見JindoFS緩存模式使用說明。
啟用緩存會利用本地磁盤對訪問的熱數(shù)據(jù)塊進(jìn)行緩存,默認(rèn)狀態(tài)為禁用,即所有OSS讀取都直接訪問OSS上的數(shù)據(jù)。緩存啟用后,Jindo服務(wù)會自動管理本地緩存?zhèn)浞?,通過水位清理本地緩存,請根據(jù)需求配置一定的比例用于緩存。
啟動spark SQL。
通過遠(yuǎn)程登錄工具(例如PuTTY)登錄EMR Header服務(wù)器。
執(zhí)行如下命令運行Spark SQL。
spark-sql --master yarn --num-executors 5 --executor-memory 1g --executor-cores 2
使用SQL語句創(chuàng)建指向OSS數(shù)據(jù)目錄的外表。
請使用通過表格存儲控制臺獲取的SQL語句,如下SQL語句示例僅供參考。
CREATE EXTERNAL TABLE lineitem (l_orderkey bigint,l_linenumber bigint,l_receiptdate string,l_returnflag string,l_tax double,l_shipmode string,l_suppkey bigint,l_shipdate string,l_commitdate string,l_partkey bigint,l_quantity double,l_comment string,l_linestatus string,l_extendedprice double,l_discount double,l_shipinstruct string) PARTITIONED BY (`year` int, `month` int) STORED AS PARQUET LOCATION 'jfs://test/' ;
通過表格存儲控制臺獲取SQL語句的方法如下:
在實例的數(shù)據(jù)湖投遞頁面,單擊投遞任務(wù)操作列的建表語句,可以查看和復(fù)制SQL語句,如下圖所示。
執(zhí)行如下SQL語句,加載OSS數(shù)據(jù)源中實際的數(shù)據(jù)分區(qū)。
其中l(wèi)ineitem為創(chuàng)建的外表名稱。
msck repair table lineitem;
查詢數(shù)據(jù)。
select * from lineitem limit 1;