現在、Apache Spark ODBCドライバーを開発しています。これにより、Perl、PHP、Excel、OracleなどのアプリケーションでSparkデータを操作できます。
ODBCデータソースの構成
Apache SparkODBCドライバーを使用してアプリケーションをApacheSparkに接続する前に、ODBCデータソースを構成する必要があります。 ODBCデータソースには、ターゲットデータベース(Apache Sparkなど)とそれに接続するために必要なODBCドライバー(Apache Spark ODBCドライバーなど)の接続の詳細が格納されます。
Apache Spark ODBCドライバーを使用するには、ApacheSpark開発者アカウントを作成する必要があります。 Apache Spark開発者ダッシュボードにログインし、RESTAPIアプリを作成します。 Apache Spark ODBCドライバーのデータソースを作成するには、アプリのクライアントIDとシークレットが必要です。
ODBCデータソースは、Windowsに含まれているODBCAdministratorで構成されます。
ODBCアドミニストレータの場合:
- [システムDSN]タブを選択し、[追加]を選択します。
- [Create New Data Source]ダイアログボックスで、[Easysoft ODBC]-[Apache Spark Driver]を選択し、[Finish]を選択します。
- Easysoft ODBC-Apache Spark DriverDSNSetupダイアログボックスのフィールドに入力します。
- アプリケーションで、新しく構成したデータソースに接続し、サンプルクエリを実行します。例:
select * from MyTable
PerlでApacheSparkデータを操作する
Strawberry Perlは、Apache SparkODBCドライバーがPerlアプリケーションをApacheSparkに接続できるようにするために必要なミドルウェアレイヤー(PerlDBIおよびPerlDBD ::ODBC)を含むWindows用のPerlディストリビューションです。
- Apache Sparkデータを取得するPerlスクリプトは次のとおりです。
#!/usr/bin/perl -w use strict; use DBI; my $dbh = DBI-> connect('dbi:ODBC:MyApacheSparkDataSource'); my $sql = "SELECT MyCol FROM MyTable LIMIT 10"; # Prepare the statement. my $sth = $dbh->prepare($sql) or die "Can't prepare statement: $DBI::errstr"; # Execute the statement. $sth->execute(); my($SparkCol); # Fetch and display the result set value. while(($SparkCol) = $sth->fetchrow()){ print("$SparkCol\n"); } $dbh->disconnect if ($dbh);
PHPでApacheSparkデータを操作する
- ApacheSparkデータを取得するPHPスクリプトは次のとおりです。
<?php $con = odbc_connect("MyApacheSparkDataSource", "", ""); $err = odbc_errormsg(); if (strlen($err) <> 0) { echo odbc_errormsg(); } else { $rs2 = odbc_exec($con, "select MyCol from MyTable"); odbc_result_all($rs2); odbc_close($con); } ?>
ExcelをApacheSparkに接続する
次の手順に従って、MicrosoftQueryを使用してApacheSparkからMicrosoftExcelにデータを返します。
- データについて タブで、新しいクエリ>他のソースから>ODBCからを選択します 。
- プロンプトが表示されたら、ApacheSparkODBCデータソースを選択します。
- 利用可能なデータセットからテーブルを選択します。
- Loadを選択してApacheSparkデータを返します ワークシートに。
大規模な結果セットの場合、データをワークシートに返す前に、Excelを使用してデータをフィルタリングする必要がある場合があることに注意してください。
OracleからApacheSparkに接続する
- OracleマシンにDG4ODBC初期化ファイルを作成します。これを行うには、
%ORACLE_HOME%\hs\admin
に変更します。 ディレクトリ。ファイルinitdg4odbc.ora
のコピーを作成します 。新しいファイルにinitspark.ora
という名前を付けます 。注 これらの手順では、%ORACLE_HOME%をOracleHOMEディレクトリの場所に置き換えます。例:
C:\oraclexe\app\oracle\product\11.2.0\server
。 - これらのパラメータと値がinitファイルに存在することを確認してください:
HS_FDS_CONNECT_INFO = MyApacheSparkDataSource
- DG4ODBCトレースを有効にする行をコメントアウトします。例:
#HS_FDS_TRACE_LEVEL = <trace_level>
-
%ORACLE_HOME%\network\admin\listener.ora
にエントリを追加します これにより、DG4ODBCのSID_NAMEが作成されます。例:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=spark) (ORACLE_HOME=%ORACLE_HOME%) (PROGRAM=dg4odbc) ) )
- DG4ODBCエントリを
%ORACLE_HOME%\network\admin\tnsnames.ora
に追加します これは、前の手順で作成したSID_NAMEを指定します。例:SPARK = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = spark) ) (HS = OK) )
oracle_hostを置き換えます Oracleマシンのホスト名を使用します。
- Oracleリスナーを起動(または再起動)します:
cd %ORACLE_HOME%\bin lsnrctl stop lsnrctl start
- SQL*PlusでOracleデータベースに接続します。
- SQL * Plusで、ターゲットApacheSparkインスタンスのデータベースリンクを作成します。例:
CREATE PUBLIC DATABASE LINK SPARKLINK CONNECT TO "mydummyuser" IDENTIFIED BY "mydummypassword" USING 'spark';
- ApacheSparkデータをクエリしてみてください。例:
SELECT * FROM "MyTable"@SPARKLINK;
メモ
- OracleからApacheSparkへの接続に問題がある場合は、DG4ODBCトレースを有効にして、
%ORACLE_HOME%\hs\trace
に書き込まれたトレースファイルを確認してください。 ディレクトリ。 DG4ODBCトレースを有効にするには、HS_FDS_TRACE_LEVEL = DEBUG
という行を追加します。initspark.ora
へ 次に、Oracleリスナーを起動/再起動します。trace
の場合 ディレクトリが存在しない場合は作成してください。 - ODBC Driver Managerトレースを有効にしても、トレースファイルを取得しない場合、または空のトレースファイルを取得しない場合(C:\ SQL.logを確認)、トレースファイルの場所をWindowsTEMPディレクトリに変更します。例:
C:\Windows\Temp\SQL.log
。