ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
AWS Glue はAmazon のETL サービスであり、簡単にデータプレパレーションを実行してストレージおよび分析用に読み込むことができます。AWS Glue と一緒にPySpark モジュールを使用すると、JDBC 接続経由でデータを処理するジョブを作成し、そのデータをAWS データストアに直接読み込むことができます。ここでは、CData JDBC Driver for BullhornCRM をAmazon S3 バケットにアップロードし、Bullhorn CRM からデータを抽出してCSV ファイルとしてS3 に保存するためのAWS Glue ジョブを作成・実行する方法について説明します。
CData JDBC Driver for BullhornCRM をAWS Glue から使用するには、ドライバーの.jar ファイル(および必要なライセンスファイル)をAmazon S3 のバケットに配置する必要があります。
CData JDBC driver でBullhorn CRM に接続するには、JDBC URL を作成します。さらにライセンスとしてJDBC URL にRTK プロパティを設定する必要があります。RTK は通常のライセンスと異なりますので、CData まで直接ご連絡をください。
Bullhorn CRM に接続するには、Bullhorn CRM アカウントの資格情報を入力します。また、DataCenterCode プロパティをデータセンターに対応するデータセンターコードに設定してください。詳しくは、こちら を参照してください。
CLS2、CLS21 などのコードはクラスタID で、ログインした際のブラウザのURL(アドレスバー)に含まれます。
例えば、
https://cls21.bullhornstaffing.com/BullhornSTAFFING/MainFrame.jsp?#no-baこちらのURL は、ログインしたユーザーがCLS21 クラスタに存在することを示しています。
ちなみに、コールバックURL の末尾に"/" を含む値、例えば http://localhost:33333/ を指定する場合は、アプリケーション設定で指定したコールバックURL と厳密に同じ値を指定する必要があります。このパラメータの文字が一致しない場合、エラーとなります。
Bullhorn CRM ではOAuth 2.0 認証標準を利用できます。 OAuth を使用して認証するには、すべてのシナリオでカスタムOAuth アプリケーションを作成して設定する必要があります。詳しい認証方法については、ヘルプドキュメントの「OAuth」セクションを参照してください。
JDBC URL の作成をサポートするビルトインの接続文字列デザイナーがあります。ドライバーの.jar ファイルをダブルクリックするか、コマンドラインで.jar ファイルを実行するとデザイナーが開きます。
java -jar cdata.jdbc.bullhorncrm.jar
必要項目を入力すると、デザインs-下部に接続文字列が生成されますのでクリップボードにコピーして使います。
CData JDBC driver をPySpark で使用して、AWS Glue モジュールでBullhorn CRM データを取得して、S3 にCSV 形式で保存するシンプルなスクリプト例は以下です。
import sys
from awsglue.transforms import *
from awsglue.utils import getResolvedOptions
from pyspark.context import SparkContext
from awsglue.context import GlueContext
from awsglue.dynamicframe import DynamicFrame
from awsglue.job import Job
args = getResolvedOptions(sys.argv, ['JOB_NAME'])
sparkContext = SparkContext()
glueContext = GlueContext(sparkContext)
sparkSession = glueContext.spark_session
##Use the CData JDBC driver to read Bullhorn CRM データ from the Candidate table into a DataFrame
##Note the populated JDBC URL and driver class name
source_df = sparkSession.read.format("jdbc").option("url","jdbc:bullhorncrm:RTK=5246...;DataCenterCode=CLS33;OAuthClientId=myoauthclientid;OAuthClientSecret=myoauthclientsecret;").option("dbtable","Candidate").option("driver","cdata.jdbc.bullhorncrm.BullhornCRMDriver").load()
glueJob = Job(glueContext)
glueJob.init(args['JOB_NAME'], args)
##Convert DataFrames to AWS Glue's DynamicFrames Object
dynamic_dframe = DynamicFrame.fromDF(source_df, glueContext, "dynamic_df")
##Write the DynamicFrame as a file in CSV format to a folder in an S3 bucket.
##It is possible to write to any Amazon data store (SQL Server, Redshift, etc) by using any previously defined connections.
retDatasink4 = glueContext.write_dynamic_frame.from_options(frame = dynamic_dframe, connection_type = "s3", connection_options = {"path": "s3://mybucket/outfiles"}, format = "csv", transformation_ctx = "datasink4")
glueJob.commit()
スクリプト記述後、Glue ジョブを実行します。実行した取得/ロードのジョブが完了するとAWS Glue コンソールのジョブページでステータスが確認できます。成功するとS3 バケットにBullhorn CRM データのCSV ファイルが生成されています。
このようにCData JDBC Driver for BullhornCRM をAWS Glue で使用することで、Bullhorn CRM データをAWS Glue で自在に扱うことができます。Glue の外部データへの接続性を拡張するJDBC Driver を是非お試しください。