全部產品
Search
文件中心

Tablestore:使用EMR

更新時間:Jun 05, 2026

使用EMR的JindoFS緩衝模式串連OSS資料湖。

背景資訊

您可以使用EMR的JindoFS緩衝模式或者JindoFS塊模式串連OSS資料湖。

  • 緩衝模式(Cache)主要相容原生OSS儲存方式,檔案以對象的形式儲存在OSS上,每個檔案根據實際訪問情況會在本地進行緩衝,提升EMR叢集內訪問OSS的效率,同時相容了OSS原有檔案形式,資料訪問上能夠與其他OSS用戶端完全相容。詳情請參見JindoFS緩衝模式使用說明

  • Block Storage模式(Block)提供了最為高效的資料讀寫能力和中繼資料訪問能力。資料以Block形式儲存在後端儲存OSS上,本地提供緩衝加速,中繼資料則由本地Namespace服務維護,提供高效的中繼資料訪問效能。詳情請參見JindoFSBlock Storage模式使用說明

前提條件

  • 已建立EMR叢集,詳情請參見建立叢集

    建立叢集時,請注意如下事項:

    • 建立EMR叢集和OSS屬於同一個阿里雲帳號,且建議EMR叢集和OSS Bucket處於同一地區。

    • 建立叢集時,請開啟挂载公网遠程登入開關,將叢集掛載到公網,用於Shell遠程登入伺服器。

    • bigboot與smartdata為後續配置相關服務,如果預設未選中,請選中bigboot與smartdata服務。

  • 已建立資料投遞任務,詳情請參見快速入門

操作步驟

  1. 使用EMR的jindoFS緩衝模式串連OSS和啟用緩衝,詳情請參見JindoFS緩衝模式使用說明

    啟用緩衝會利用本地磁碟對訪問的熱資料區塊進行緩衝,預設狀態為禁用,即所有OSS讀取都直接存取OSS上的資料。緩衝啟用後,Jindo服務會自動管理本機快取備份,通過水位清理本機快取,請根據需求配置一定的比例用於緩衝。

  2. 啟動spark SQL。

    1. 通過遠程登入工具(例如PuTTY)登入EMR Header伺服器。

    2. 執行如下命令運行Spark SQL。

      spark-sql --master yarn --num-executors 5 --executor-memory 1g --executor-cores 2
  3. 使用SQL語句建立指向OSS資料目錄的外表。

    請使用通過Table Store控制台擷取的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語句。

  4. 執行如下SQL語句,載入OSS資料來源中實際的資料分區。

    其中lineitem為建立的外表名稱。

    msck repair table lineitem;
    20/09/22 15:17:04 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:17:04 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759024916 with spark sql successfully.
    Time taken: 1.377 seconds
    20/09/22 15:17:04 INFO [main] SparkSQLCLIDriver: Time taken: 1.377 seconds
    spark-sql> msck repair table lineitem;
    20/09/22 15:17:20 INFO [main] AlterTableRecoverPartitionsCommand: Recover all the partitions in jfs://test/
    20/09/22 15:17:20 INFO [main] AbstractJindoFileSystem: Jboot log name is /var/log/bigboot/jboot-INFO-1600759040539-
    20/09/22 15:17:20 INFO [main] OssStore: Filesystem support for magic committers is enabled, write buffer size 1048576
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/, dst=null, size=1, parameter=, time-in-ms=444, version=2.7.301
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020, dst=null, size=2, parameter=, time-in-ms=151, version=2.7.301
    20/09/22 15:17:21 INFO [main] AlterTableRecoverPartitionsCommand: Found 2 partitions in jfs://test/
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020/month=8, dst=null, size=21, parameter=, time-in-ms=163, version=2.7
    20/09/22 15:17:21 INFO [main] FsStats: cmd=listStatus, src=jfs://test/year=2020/month=9, dst=null, size=21, parameter=, time-in-ms=86, version=2.7
    20/09/22 15:17:21 INFO [main] AlterTableRecoverPartitionsCommand: Finished to gather the fast stats for all 2 partitions.
    20/09/22 15:17:22 INFO [main] AlterTableRecoverPartitionsCommand: Recovered all partitions (2).
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: command is called
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759042070 with spark sql successfully.
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:17:22 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759042100 with spark sql successfully.
    Time taken: 1.693 seconds
    20/09/22 15:17:22 INFO [main] SparkSQLCLIDriver: Time taken: 1.693 seconds
    spark-sql>
  5. 查詢資料。

    select * from lineitem limit 1;
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListener: execution is called
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListener: Spark user root executed on 1600759131254 with spark sql successfully.
    20/09/22 15:18:51 INFO [main] FsStats: cmd=getFileStatus, src=jfs://test/_index, dst=null, size=-1, parameter=null, time-in-ms=22, version=2.7.301
    20/09/22 15:18:51 INFO [main] PrunedInMemoryFileIndex: It took 1 ms to list leaf files for 2 paths.
    20/09/22 15:18:51 INFO [main] SparkSQLQueryListenerHelper: Partitioned table:default.lineitem;cols:l_orderkey,l_linenumber,l_receiptdate,l_returnflag,l_tax,l_shipmode,l_suppkey,l_shipdate,_commitdate,l_partkey,l_quantity,l_comment,l_linestatus,l_extendedprice,l_discount,l_shipinstruct;parts:year=2020/month=8,year=2020/month=9;paths:jfs://test/year=2020/month=8,jfs://test/year=2020/month=9.
    20/09/22 15:18:51 INFO [main] NativeClient: JindoTable put 2 records.
    44095908	1	1996-09-19	N	0.03	SHIP	5928453 1996-08-28	1996-06-19	145353442	10.0	lly ironic theo O	14881.8 0.08	TAKE BACK RETURN
    020	8
    Time taken: 6.22 seconds, Fetched 1 row(s)
    20/09/22 15:18:51 INFO [main] SparkSQLCLIDriver: Time taken: 6.22 seconds, Fetched 1 row(s)
    spark-sql>