日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

使用Spark的DataFrame方式訪問表格存儲(chǔ),并在本地和集群上分別進(jìn)行運(yùn)行調(diào)試。

前提條件

  • 了解Spark訪問表格存儲(chǔ)的依賴包,并在使用時(shí)通過Maven方式引入項(xiàng)目中。

    • Spark相關(guān):spark-core、spark-sql、spark-hive

    • Spark Tablestore connector:emr-tablestore-<version>.jar

    • Tablestore Java SDK:tablestore-<version>-jar-with-dependencies.jar

    其中<version>表示相應(yīng)依賴包的版本號(hào),請(qǐng)以實(shí)際為準(zhǔn)。

  • 已在表格存儲(chǔ)側(cè)創(chuàng)建數(shù)據(jù)表。具體操作,請(qǐng)參見創(chuàng)建數(shù)據(jù)表

  • 已獲取AccessKey(包括AccessKey ID和AccessKey Secret)。具體操作,請(qǐng)參見獲取AccessKey

快速開始

通過項(xiàng)目樣例了解快速使用批計(jì)算的操作。

  1. 從GitHub下載項(xiàng)目樣例的源碼,具體下載路徑請(qǐng)參見TableStoreSparkDemo

    項(xiàng)目中包含完整的依賴和使用樣例,具體的依賴請(qǐng)參見項(xiàng)目中的pom文件。

  2. 閱讀TableStoreSparkDemo項(xiàng)目的README文檔,并安裝最新版的Spark Tablestore connector和Tablestore Java SDK到本地Maven庫(kù)。

  3. 修改Sample代碼。

    以TableStoreBatchSample為例,對(duì)此示例代碼的核心代碼說明如下:

    • format("tablestore")表示使用ServiceLoader方式加載Spark Tablestore connector,具體配置請(qǐng)參見項(xiàng)目中的META-INF.services。

    • instanceName、tableName、endpoint、accessKeyId、accessKeySecret分別表示表格存儲(chǔ)的實(shí)例名稱、數(shù)據(jù)表名稱、實(shí)例endpoint、阿里云賬號(hào)的AccessKey ID和AccessKey Secret。

    • catalog是一個(gè)JSON串,包含字段名和類型,如下示例中的數(shù)據(jù)表有salt(Long類型)、UserId(String類型)、OrderId(String類型)、price(Double類型)和timestamp(Long類型)五個(gè)字段。

      最新版本中支持使用Schema方式替換catalog的配置,請(qǐng)根據(jù)實(shí)際選擇。

    • split.size.mbs表示每個(gè)Split的切分大小,默認(rèn)值為100,單位為MB,可不配置。

      此值越小產(chǎn)生的Split會(huì)越多,對(duì)應(yīng)Spark的Task也會(huì)越多。

          val df = sparkSession.read
          .format("tablestore")
          .option("instance.name", instanceName)
          .option("table.name", tableName)
          .option("endpoint", endpoint)
          .option("access.key.id", accessKeyId)
          .option("access.key.secret", accessKeySecret)
          .option("split.size.mbs", 100)
          .option("catalog", dataCatalog)
          // 最新版本支持使用Schema方式替換catalog的配置。
          //.schema("salt LONG, UserId STRING, OrderId STRING, price DOUBLE, timestamp LONG")
          .load()
      
        val dataCatalog: String =
          s"""
             |{"columns": {
             |    "salt": {"type":"long"},
             |    "UserId": {"type":"string"},
             |    "OrderId": {"type":"string"},
             |    "price": {"type":"double"},
             |    "timestamp": {"type":"long"}
             | }
             |}""".stripMargin
      

運(yùn)行調(diào)試

根據(jù)需求修改示例代碼后,可在本地或者通過Spark集群進(jìn)行運(yùn)行調(diào)試。以TableStoreBatchSample為例說明調(diào)試過程。

  • 本地調(diào)試

    以IntelliJ IDEA為例說明。

    說明

    本文測(cè)試使用的環(huán)境為Spark 2.4.3、Scala 2.11.7和Java SE Development Kit 8,如果使用中遇到問題,請(qǐng)聯(lián)系表格存儲(chǔ)技術(shù)支持。

    1. 在系統(tǒng)參數(shù)中,配置實(shí)例名稱、數(shù)據(jù)表名稱、實(shí)例endpoint、阿里云賬號(hào)的AccessKey ID和AccessKey Secret等參數(shù)。

      您也可以自定義參數(shù)的加載方式。

    2. 選擇include dependencies with "provided" scope,單擊OK

    3. 運(yùn)行示例代碼程序。

      idea_001
  • 通過Spark集群調(diào)試

    以spark-submit方式為例說明。示例代碼中的master默認(rèn)為local[*],在Spark集群上運(yùn)行時(shí)可以去掉,使用spark-submit參數(shù)傳入。

    1. 執(zhí)行mvn -U clean package命令打包,包的路徑為target/tablestore-spark-demo-1.0-SNAPSHOT-jar-with-dependencies.jar

    2. 上傳包到Spark集群的Driver節(jié)點(diǎn),并使用spark-submit提交任務(wù)。

      spark-submit --class com.aliyun.tablestore.spark.demo.batch.TableStoreBatchSample --master yarn tablestore-spark-demo-1.0-SNAPSHOT-jar-with-dependencies.jar <ots-instanceName> <ots-tableName> <access-key-id> <access-key-secret> <ots-endpoint>
      fig_batch_dataframe001