Databricks(AWS)でIBM Cloud Object Storage のデータを処理・分析
Databricks は、Apache Spark を通じたデータ処理機能を提供するクラウドベースのサービスです。CData JDBC Driver と組み合わせることで、Databricks を使用してリアルタイムIBM Cloud Object Storage のデータに対してデータエンジニアリングとデータサイエンスを実行できます。この記事では、AWS でCData JDBC Driver をホストし、Databricks でリアルタイムIBM Cloud Object Storage のデータに接続して処理する方法を説明します。
最適化されたデータ処理が組み込まれたCData JDBC Driver は、リアルタイムIBM Cloud Object Storage のデータを扱う上で比類のないパフォーマンスを提供します。IBM Cloud Object Storage に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされているSQL 操作をIBM Cloud Object Storage に直接プッシュし、サポートされていない操作(主にSQL 関数やJOIN 操作)は組み込みSQL エンジンを利用してクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使ってIBM Cloud Object Storage のデータを操作・分析できます。
CData JDBC Driver をDatabricks にインストール
Databricks でリアルタイムIBM Cloud Object Storage のデータを操作するには、Databricks クラスターにドライバーをインストールします。
- Databricks の管理画面に移動し、対象のクラスターを選択します。
- Libraries タブで「Install New」をクリックします。
- Library Source として「Upload」を選択し、Library Type として「Jar」を選択します。
- インストール場所(通常はC:\Program Files\CData[product_name]\lib)からJDBC JAR ファイル(cdata.jdbc.ibmcloudobjectstorage.jar)をアップロードします。
ノートブックでIBM Cloud Object Storage のデータにアクセス:Python
JAR ファイルをインストールしたら、Databricks でリアルタイムIBM Cloud Object Storage のデータを操作する準備が整いました。ワークスペースに新しいノートブックを作成します。ノートブックに名前を付け、言語としてPython を選択し(Scala も利用可能)、JDBC ドライバーをインストールしたクラスターを選択します。ノートブックが起動したら、接続を設定し、IBM Cloud Object Storage をクエリして、基本的なレポートを作成できます。
IBM Cloud Object Storage への接続を設定
JDBC Driver クラスを参照し、JDBC URL で使用する接続文字列を構築してIBM Cloud Object Storage に接続します。また、JDBC URL でRTK プロパティを設定する必要があります(Beta ドライバーを使用している場合を除く)。このプロパティの設定方法については、インストールに含まれるライセンスファイルを参照してください。
ステップ1:接続情報
driver = "cdata.jdbc.ibmcloudobjectstorage.IBMCloudObjectStorageDriver" url = "jdbc:ibmcloudobjectstorage:RTK=5246...;ApiKey=myApiKey;CloudObjectStorageCRN=MyInstanceCRN;Region=myRegion;OAuthClientId=MyOAuthClientId;OAuthClientSecret=myOAuthClientSecret;"
組み込みの接続文字列デザイナー
JDBC URL の作成をサポートするために、IBM Cloud Object Storage JDBC Driver に組み込まれている接続文字列デザイナーが使用できます。JAR ファイルをダブルクリックするか、コマンドラインからJAR ファイルを実行します。
java -jar cdata.jdbc.ibmcloudobjectstorage.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
Cloud Object Storage 接続プロパティの取得・設定方法
Cloud Object Storage に接続する前に、Cloud Object Storage インスタンスを登録してCloud Object Storage API キーとCRN を取得していきます。
Cloud Object Storage の新規インスタンスの登録
IBM Cloud アカウントにCloud Object Storage がまだない場合は、以下の手順に従ってアカウントにSQL Query のインスタンスをインストールできます。
- IBM Cloud アカウントにログインします。
- Cloud Object Storage ページに移動して、インスタンス名を指定して「作成」をクリックします。Cloud Object Storage の新規インスタンスにリダイレクトされます。
API キー
API キーは以下の手順で取得できます。
- まずは、IBM Cloud アカウントにログインします。
- API キーページに移動します。
- 中央右隅のIBM Cloud APIキーの作成 をクリックして、新しいAPI キーを作成します。
- ポップアップウィンドウが表示されたら、API キーの名前を指定して作成をクリックします。ダッシュボードからはアクセスできなくなるため、API Key を控えておきましょう。
Cloud Object Storage CRN
デフォルトでは、CData 製品はCloud Object Storage CRN を自動で取得します。ただし、複数のアカウントがある場合は、CloudObjectStorageCRN を明示的に指定する必要があります。この値は、次の2つの方法で取得できます。
- Services ビューをクエリする。これにより、IBM Cloud Object Storage インスタンスとそれぞれのCRN がリストされます。
- IBM Cloud で直接CRN を見つける。これを行うには、IBM Cloud のダッシュボードに移動します。リソースリストで、ストレージからCloud Object Storage リソースを選択してCRN を取得します。
IBM Cloud Object Storage への接続
これで準備は完了です。以下の接続プロパティを設定してください。
- InitiateOAuth:GETANDREFRESH に設定。InitiateOAuth を使うと、OAuth 認証を繰り返す必要がなく、さらに自動でアクセストークンを設定できます。
- ApiKey:セットアップ中に控えたAPI キーを指定。
- CloudObjectStorageCRN(オプション):控えておいたCloud Object Storage のCRN に設定。Cloud Object Storage アカウントが複数ある場合のみ設定する必要があります。
プロパティを設定したら、これで接続設定は完了です。
IBM Cloud Object Storage のデータをロード
接続を設定したら、CData JDBC Driver と接続情報を使用して、IBM Cloud Object Storage のデータをDataFrame としてロードできます。
ステップ2:データの読み取り
remote_table = spark.read.format ( "jdbc" ) \ .option ( "driver" , driver) \ .option ( "url" , url) \ .option ( "dbtable" , "Objects") \ .load ()
IBM Cloud Object Storage のデータを表示
ロードしたIBM Cloud Object Storage のデータをdisplay 関数を呼び出して確認します。
ステップ3:結果の確認
display (remote_table.select ("Key"))
Databricks でIBM Cloud Object Storage のデータを分析
Databricks SparkSQL でデータを処理するには、ロードしたデータをTemp View として登録します。
ステップ4:ビューまたはテーブルを作成
remote_table.createOrReplaceTempView ( "SAMPLE_VIEW" )
Temp View を作成したら、SparkSQL を使用してIBM Cloud Object Storage のデータをレポート、ビジュアライゼーション、分析用に取得できます。
% sql SELECT Key, Etag FROM SAMPLE_VIEW ORDER BY Etag DESC LIMIT 5
IBM Cloud Object Storage からのデータは、対象のノートブックでのみ利用可能です。他のユーザーと共有したい場合は、テーブルとして保存します。
remote_table.write.format ( "parquet" ) .saveAsTable ( "SAMPLE_TABLE" )
CData JDBC Driver for IBM Cloud Object Storage の30日間無償トライアルをダウンロードして、Databricks でリアルタイムIBM Cloud Object Storage のデータの操作をはじめましょう。ご不明な点があれば、サポートチームにお問い合わせください。