プロジェクトに SDK を含めます

HERE Workspace で実行されるアプリケーションは、次のコンポーネントに依存している可能性があります。

  • ロケーション ライブラリ、データ プロセッシング ライブラリ、データ クライアント ライブラリなどの Java & Scala ライブラリ用の HERE Data SDK 。

  • ランタイム環境の一部として提供されるライブラリ。 Workspace では、バッチとストリームの 2 つのランタイム環境がサポートされています。 バッチ環境では 、 Apache Spark アプリケーションが使用する最小限の量のライブラリが提供されます。 ストリーム環境には 、 Apache Flink アプリケーションが使用するライブラリが用意されています。

  • HERE Map Content 、 HERE Weather 、またはユーザーが指定したスキーマなど、データのエンコードとデコードを行うための Protobuf スキーマ。

前述のすべての種類の依存関係について、 HERE Data SDK では、これらの依存関係を管理するさまざまな方法を提供しています。

HERE Data SDK ライブラリ

Data SDK 内のライブラリのバージョンが異なります。 たとえば、データ プロセッシング ライブラリ 3.1.13 およびデータ クライアント ライブラリ 0.2.24 は、同じ Data SDK リリースの一部です。 また、 Data SDK 内には相互依存性があります。たとえば、ロケーション ライブラリとデータ プロセッシング ライブラリはデータ クライアント ライブラリに依存しているため、依存関係を管理する際に考慮する必要があります。

依存関係管理を支援するために、 Data SDK には部品表 (BOM) ファイルが用意されています。 各 BOM は、これらのライブラリの互換性のあるバージョンを一覧表示する Maven POM ファイルです。

3 つの異なる BOM ファイルがあります。

  • Scala 2.12:
    • sdk-batch-bom_2.12.pom - このファイルには、 HERE Data SDK for Java & Scala ライブラリの互換性のあるバージョン、それらの依存関係、および HERE Workspace バッチ 3.0.0 ランタイム環境( Apache Spark 2.4.7 )によって提供されるライブラリが含まれています。 Scala 2.12 でのバッチ処理のための SDK ライブラリを参照してください。
    • sdk-stream-bom_2.12.pom - このファイルには、互換性のあるバージョンの Data SDK ライブラリ、それらの依存関係、および HERE Workspace ストリーム 5.0 ランタイム環境( Apache Flink 1.13.5 )によって提供されるライブラリが含まれています。 Scala 2.12 でのストリーム処理用 SDK ライブラリを参照してください。
    • sdk-standalone-bom_2.12.pom - このファイルには、 Data SDK とその依存関係の互換性のあるライブラリが含まれています。 この POM ファイルを使用して、自分の環境でアプリケーションを実行します。 Scala 2.12 でのスタンドアロンモードでの使用については、 SDK ライブラリを参照してください。

依存関係を解決するには、リポジトリ資格情報が必要です。

BOM を含む

プロジェクトの POM ファイルに BOM ファイルを含めるには、次の 2 つの方法があります。

  1. 親 POM ファイルとして ( 推奨 ):

    <!-- Inherit all properties, dependency management and plugin management from the SDK -->
    <parent>
    <groupId>com.here.platform</groupId>
    <artifactId>sdk-batch-bom_2.12</artifactId>
    <version>2.41.4</version>
    </parent>
    
  2. または、プロジェクトにすでに親がある場合は import 、依存関係にを使用します。

    <dependencyManagement>
    <dependencies>
     <dependency>
        <!-- Import dependency management from the SDK, but properties and plugin management are skipped -->
        <groupId>com.here.platform</groupId>
        <artifactId>sdk-batch-bom_2.12</artifactId>
        <version>2.41.4</version>
        <type>pom</type>
        <scope>import</scope>
     </dependency>
    </dependencies>
    </dependencyManagement>
    

注 : 例

すべてのコードスニペットが例として sdk-batch-bom_2.12 使用しますが、 sdk-stream-bom_2.12sdk-standalone-bom_2.12 には同じ命令が適用されます。 1 つのプロジェクトで使用する SDK BOM ファイルは 1 つだけであることに注意してください。

ファイルにはプラグイン管理セクションと便利なプロパティが含まれているため、 BOM ファイルを親として含めることをお勧めします。

たとえば sdk-batch-bom_2.12 、およびのプラグイン管理セクション sdk-stream-bom_2.12platform は、ファット JAR を作成するプロファイルが含まれています。 クラウドでアプリケーションを実行する前に、このファット JAR をワークスペースにアップロードする必要があります。

メモ

platform プロファイルでは、パイプライン 内から JAR を使用するときに適切に動作するように、一部のファイルが除外され、一部のライブラリが色分けされます。 特に、 application.propertiesplatformsdk-stream-bom_2.12application.properties ランタイムによって提供されたファイルを上書きしないように、ファイルはファイルのプロファイルから除外されます。

プラグイン管理セクションと platform プロファイルのもう 1 つの重要な部分は、 protobuf-java 3 つ以上を色分けする maven-shade-plugin ことです。 protobuf-java ライブラリおよび Apache Spark で使用されている Apache Flink のバージョンと、 Data SDK ライブラリおよび Protobuf レイヤースキーマで使用されているこのライブラリのバージョンとの間に競合があるため、シェーディングメカニズムが必要です。 Data SDK では新しいバージョン 3 以降が使用されますが、ストリーム環境とバッチ環境の両方で Protobuf 2+ が提供されます。

platform プロファイルは mvn -Pplatform package 、またはのようにアクティブ化でき mvn --activate-profiles=platform packageます。

ファイルを親として POM に含めることができない場合は、ファイルの内容を確認し、プロパティをコピーして、プロジェクトに関連するプラグイン管理設定を行います。

依存関係を含める

プロジェクトに BOM ファイルが含まれるとすぐに、プロジェクトはライブラリの実際のバージョンを指定せずに、 Data SDK ライブラリまたは依存関係を参照できます。

<dependencies>
  <!-- Reference to pipeline runner library from Data Processing Library -->
  <dependency>
      <groupId>com.here.platform.data.processing</groupId>
      <artifactId>pipeline-runner-java_2.12</artifactId>
  </dependency>
</dependencies>

このアプローチにより、 Data SDK の 1 つのバージョンから新しいバージョンへの移行が簡素化されます。 のバージョンを変更 sdk-batch-bom_2.12 すると、すべての Data SDK ライブラリのバージョンとその依存関係、およびバッチ環境によって提供されるライブラリのバージョンが更新されます。

このアプローチでは、 1 つの Data SDK バージョンからより新しいバージョンへの移行が簡素化されます。 sdk-batch-bom_2.12 プロジェクトののバージョンを変更すると、プロジェクトでは次の更新バージョンが使用されます。

  • Data SDK ライブラリ
  • すべての Data SDK ライブラリの依存関係
  • バッチ環境によって提供されるライブラリー

異なるバージョンのパッケージに依存するアプリケーションが BOM で定義されている場合、次のようなランタイム例外が表示されることがあります。

  • ClassNotFoundException
  • NoSuchMethodError

これらの例外は、ランタイム環境で提供されているライブラリでクラスまたはメソッドが見つからない場合に発生します。 次の 2 つの一般的なケースがあります。

  1. ランタイム環境には古いバージョンのライブラリが含まれています。アプリケーションには新しいメソッドとクラスを持つ新しいバージョンが必要です。
  2. ランタイム環境には新しいバージョンのライブラリが含まれていますが、古いバージョンから削除された廃止予定のメソッドまたはクラスが使用されています。

ライブラリがプロジェクトで参照されている場合は、 BOM ファイルから対応するバージョンのライブラリを使用できます。 ただし、一時的な依存関係のいずれかのバージョンが、ランタイム環境で提供されているバージョンと競合している可能性があります。 この場合、この推移的な依存関係を非表示にする必要があります。 ライブラリをシェード表示する方法の例については、 sdk-batch-bom_2.12 または sdk-stream-bom_2.12platform プロファイルを参照してください。 このプロファイルで protobuf-java は、前述のようにパッケージが色分けされます。

依存関係と BOM をインポートする方法の詳細について は、『 Maven 依存関係管理ガイド』を参照してください。

注 : 原型

ワークスペースが提供する バッチ およびストリーミングのアーキタイプには、 BOM が含まれており、プロジェクトの POM ファイルに必要な依存関係があります。 Maven 構築システムのみがこれらの原型をサポートしています。

パイプラインランタイム環境ライブラリ

HERE Workspace は、位置データベースのアプリケーションを実行するためのバッチパイプラインおよびストリーミングパイプラインを提供します。 各パイプラインジョブは、特定のランタイム環境内で実行されます。 この環境は、次の要素で構成されています。

  1. Java ランタイム環境 (JRE)
  2. Apache Spark または Apache Flink フレームワーク

バッチ( Spark )またはストリーミング( Flink )環境には、 Java 仮想マシン( JVM )によってロードされたパッケージのリストが含まれており、他のアプリケーションによって提供されたパッケージよりも優先されます。

ランタイム環境の一部であるパッケージのリストを記述するために、 Data SDK には次の 2 つの環境 BOM が用意されています。

  • Scala 2.12:
    • environment-batch-3.0.0.pom
    • environment-stream-5.0.2.pom

ランタイム環境のパッケージは provided 、対応する環境 BOM でとしてマークされます。 たとえば、 Apache Spark パッケージ spark-coreprovided 、次のようにマークされてい environment-batch-3.0.0.pomます。

<dependency>
  <groupId>org.apache.spark</groupId>
  <artifactId>spark-core_${scala.compat.version}</artifactId>
  <version>${spark.version}</version>
  <scope>provided</scope>
</dependency>

sdk-batch-bom_2.12 および sdk-stream-bom_2.12 ファイルには、対応する environment-batch-3.0.0.pom および environment-stream-5.0.2.pom ファイルが含まれていることに注意してください。 対応する環境 POM ファイルを使用する sdk-batch-bom_2.12sdk-stream-bom_2.12 、または明示的に含める必要のないプロジェクト。 パイプラインランタイム環境によって提供されるライブラリの詳細については、対応する環境 POM ファイルを参照してください。

Protobuf スキーマ

HERE Workspace を使用すると、ユーザーは Protobuf スキーマを定義してワークスペースに配布できます。 スキーマは、 プラットフォーム資格情報を必要とする特殊なリポジトリに保存されます。 このリポジトリにアクセスできるのは 、 Maven プロジェクトの HERE Maven Wagon を使用した場合のみです。

SBT プロジェクトでは、非公式 の HERE SBT Resolver プラグインを使用できます。

GitHub の README.MD に Maven Wagon プラグインまたは SBT Resolver プラグインをインストールする手順に従います

いずれかのプラグインが設定されている場合に、プロジェクトで共有されているスキーマアーティファクトを含めるには、次の手順を実行します。

  1. HERE ポータルに移動します。
  2. 含める共有スキーマを探し Artifacts 、タブを開きます。
  3. Maven プロジェクトの場合は、命令をコピーしてプロジェクトに貼り付けます。 SBT プロジェクトの場合、次のコードに示すように SBT 形式の命令を変換し build.sbt 、ファイルに追加します。
libraryDependencies += "groupId" % "artifactId" % "version"

詳細について は、「スキーマの作成と拡張」を参照してください。

Scala 2.11 から Scala 2.12 への移行ガイド

このセクションでは、 Scala 2.11 から Scala 2.12 にアプリを移行するために行う必要があるハイレベルな変更について説明します。 HERE Data SDK for Java & Scala 2.28 リリースの一部として Scala 2.12 サポートが導入されました。

  1. _2.12 各環境にサフィックスが付いた新しい SDK BOM ファイルが追加されました。 Scala 2.12 に移行するには、 SDK BOM artifactId を次のように更新して _2.12 サフィックスを追加します。

  2. 使用 _2.11 するサフィックスでアプリの依存関係 _2.12を変更します。 _${scala.compat.version} 接尾辞としてを使用することをお勧めします。 たとえば、

     <dependency>
       <groupId>org.apache.spark</groupId>
       <artifactId>spark-core_${scala.compat.version}</artifactId>
       <version>${spark.version}</version>
       <scope>provided</scope>
     </dependency>
    

    便宜上、すべての SDK BOM ファイルが ${scala.compat.version} プロパティを宣言します。 このプロパティを使用するには、 SDK BOM がプロジェクトの親として追加されている必要があります。

  3. HERE によって管理されているスキーマが更新され Scala 2.12、以下をサポートします。

    • HERE Map Content スキーマ
    • SDII スキーマ
    • Sensoris スキーマ(センサーセンサー温度)
    • リアルタイムトラフィックスキーマ
    • Weather スキーマ
    • Optimized Map for Location Library

    Scala 2.12 すべてのバインディング _2.12 にサフィックスが付きます。 上記のスキーマを使用するには、スキーマ artifactId にスキーマ _2.12 を追加する必要があります。

    Mavenまたは sbt プロジェクトにスキーマを含める方法の詳細については、プラットフォームの「スキーマ」ページを参照してください。例については、「 Sensoris スキーマ」を参照してください。

  4. プラットフォームで公開されている独自のスキーマは Scala 2.12
    Scala 2.12 、スキーマプロジェクトにバインディングを追加することで、をサポートするように更新する必要があります。

    使用するスキーマの移行の詳細について Scala 2.12は、『スキーマ移行ガイド』を参照してください。

  5. 2.28リリース以降、 HERE platform では 、Scala 2.12の 2 つの追加のパイプライン環境をサポート しています。 Scala 2.12 プラットフォームでアプリケーションを実行するには、次の最新バージョンを使用します。

    OLP CLI を使用する場合は、 olp pipeline template create コマンドで <cluster type> パラメータを変更する必要があります。

既知の問題

  1. アプリで maven-shade-plugin バージョン 3.1.0 またはそれよりも古いバージョンを使用している場合は、新しいバージョンにアップグレードすることをお勧めします。 アップグレードするには、 SDK BOM のバージョンを使用することをお勧めします。
  2. Spark の現在のデータセット API Java 8 、 lambdas またはのユーザーには使用できませ Scala 2.12ん。 この場合は、 Spark Dataset .map() メソッドを使用する Java 8 コードで、明示的な型キャストを MapFunction<> に追加します。

」に一致する結果は 件です

    」に一致する結果はありません