Apache Spark でSAP Business Warehouse のデータをSQL で操作する方法

杉本和也
杉本和也
リードエンジニア
CData JDBC ドライバーを使用して、Apache Spark でSAP Business Warehouse にデータ連携。



Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for SAPBusinessWarehouse と組み合わせると、Spark はリアルタイムでSAP Business Warehouse のデータに連携して処理ができます。本記事では、Spark シェルに接続してSAP Business Warehouse をクエリする方法について解説します。

CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムSAP Business Warehouse と対話するための高いパフォーマンスを提供します。SAP Business Warehouse に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接SAP Business Warehouse にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してSAP Business Warehouse を操作して分析できます。

CData JDBC Driver for SAPBusinessWarehouse をインストール

まずは、本記事右側のサイドバーからSAPBusinessWarehouse JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

Spark Shell を起動してSAP Business Warehouse のデータに接続

  1. ターミナルを開き、Spark shell でCData JDBC Driver for SAPBusinessWarehouse JAR file をjars パラメータに設定します:
    $ spark-shell --jars /CData/CData JDBC Driver for SAPBusinessWarehouse/lib/cdata.jdbc.sapbusinesswarehouse.jar
    
  2. Shell でJDBC URL を使ってSAP Business Warehouse に接続し、SQL Context load() function でテーブルを読み込みます。

    SAP Business Warehouse に接続するには、URL プロパティを有効なSAP Business Warehouse サーバーのベースURL に設定します。ドライバーはXMLAアクセスを使用してHTTP 上でホストされたSAP Business Warehouse インスタンスに接続する必要があります。

    ドライバーはAuthScheme プロパティを通じて以下の認証スキームをサポートしています:

    • None:サーバーで使用可能な場合、匿名認証。
    • BasicUserPassword を設定し、AuthSchemeBasic に設定します。
    • Kerberos:必要なKerberos プロパティについては、ヘルプドキュメントの「Kerberos の使用」セクションを参照してください。

    デフォルトでは、ドライバーはシステムの信頼された証明書ストアに対してサーバーの証明書を確認することでSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、使用可能な形式についてSSLServerCert プロパティを参照してください。

    組み込みの接続文字列デザイナー

    JDBC 接続文字列URL の作成には、SAP Business Warehouse JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。

    java -jar cdata.jdbc.sapbusinesswarehouse.jar
    

    接続プロパティを入力し、接続文字列をクリップボードにコピーします。

    scala> val sapbusinesswarehouse_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:sapbusinesswarehouse:URL=https://mysapserver:8000;AuthScheme=Basic;User=username;Password=password;").option("dbtable","Sales").option("driver","cdata.jdbc.sapbusinesswarehouse.SAPBusinessWarehouseDriver").load()
    
  3. 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
  4. SAP Business Warehouse をテンポラリーテーブルとして登録します:

    scala> sapbusinesswarehouse_df.registerTable("sales")
  5. データに対して、次のようなカスタムSQL クエリを実行します。

    scala> sapbusinesswarehouse_df.sqlContext.sql("SELECT CustomerCount, City FROM Sales WHERE Country = US").collect.foreach(println)

    コンソールで、次のようなSAP Business Warehouse のデータを取得できました!これでSAP Business Warehouse との連携は完了です。

    SAP Business Warehouse をApache Spark から取得

CData JDBC Driver for SAPBusinessWarehouse をApache Spark で使って、SAP Business Warehouse に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。

Apache Spark の設定

はじめる準備はできましたか?

SAP Business Warehouse Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

SAP Business Warehouse Icon SAP Business Warehouse JDBC Driver

SAP Business Warehouse と連携する高機能なJava アプリケーションを迅速に開発・デプロイ。