We ontwikkelen momenteel een Apache Spark ODBC-stuurprogramma, waarmee u met Spark-gegevens kunt werken in toepassingen zoals Perl, PHP, Excel en Oracle).
Een ODBC-gegevensbron configureren
Voordat het Apache Spark ODBC-stuurprogramma kan worden gebruikt om een toepassing met Apache Spark te verbinden, moet een ODBC-gegevensbron worden geconfigureerd. Een ODBC-gegevensbron slaat de verbindingsdetails op voor de doeldatabase (bijv. Apache Spark) en het ODBC-stuurprogramma dat nodig is om er verbinding mee te maken (bijv. het Apache Spark ODBC-stuurprogramma).
Om het Apache Spark ODBC-stuurprogramma te gebruiken, moet u een Apache Spark-ontwikkelaarsaccount maken. Log in op het Apache Spark-dashboard voor ontwikkelaars en maak een REST API-app. U hebt de client-ID en het geheim van de app nodig om een gegevensbron te maken voor het Apache Spark ODBC-stuurprogramma.
ODBC-gegevensbronnen worden geconfigureerd in ODBC Administrator, dat bij Windows wordt geleverd.
In ODBC-beheerder:
- Kies het tabblad Systeem-DSN en kies vervolgens Toevoegen.
- Kies in het dialoogvenster Nieuwe gegevensbron maken de optie Easysoft ODBC-Apache Spark-stuurprogramma en kies vervolgens Voltooien.
- Vul de velden in het dialoogvenster Easysoft ODBC-Apache Spark Driver DSN Setup in.
- Maak in uw toepassing verbinding met uw nieuw geconfigureerde gegevensbron en voer een voorbeeldquery uit. Bijvoorbeeld:
select * from MyTable
Werken met Apache Spark-gegevens in Perl
Strawberry Perl is een Perl-distributie voor Windows die de nodige middleware-lagen bevat (Perl DBI en Perl DBD::ODBC) om de Apache Spark ODBC-driver in staat te stellen uw Perl-applicaties te verbinden met Apache Spark.
- Hier is een Perl-script dat enkele Apache Spark-gegevens ophaalt:
#!/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);
Werken met Apache Spark-gegevens in PHP
- Hier is een PHP-script dat enkele Apache Spark-gegevens ophaalt:
<?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 verbinden met Apache Spark
Volg deze stappen om gegevens van Apache Spark naar Microsoft Excel te retourneren met behulp van Microsoft Query:
- Op de Gegevens tabblad, kies Nieuwe zoekopdracht> Van andere bron> Van ODBC .
- Kies de Apache Spark ODBC-gegevensbron wanneer daarom wordt gevraagd.
- Kies een tabel uit de beschikbare datasets.
- Kies Laden om de Apache Spark-gegevens te retourneren naar het werkblad.
Houd er rekening mee dat u bij grote resultatensets de gegevens mogelijk moet filteren met Excel voordat de gegevens naar het werkblad kunnen worden teruggestuurd.
Verbind met Apache Spark vanuit Oracle
- Maak een DG4ODBC init-bestand op uw Oracle-machine. Ga hiervoor naar de
%ORACLE_HOME%\hs\admin
map. Maak een kopie van het bestandinitdg4odbc.ora
. Geef het nieuwe bestand de naaminitspark.ora
.Opmerking Vervang in deze instructies %ORACLE_HOME% door de locatie van uw Oracle HOME-directory. Bijvoorbeeld
C:\oraclexe\app\oracle\product\11.2.0\server
. - Zorg ervoor dat deze parameters en waarden aanwezig zijn in uw init-bestand:
HS_FDS_CONNECT_INFO = MyApacheSparkDataSource
- Reageer op de regel die DG4ODBC-tracering mogelijk maakt. Bijvoorbeeld:
#HS_FDS_TRACE_LEVEL = <trace_level>
- Voeg een item toe aan
%ORACLE_HOME%\network\admin\listener.ora
dat maakt een SID_NAME voor DG4ODBC. Bijvoorbeeld:SID_LIST_LISTENER = (SID_LIST = (SID_DESC= (SID_NAME=spark) (ORACLE_HOME=%ORACLE_HOME%) (PROGRAM=dg4odbc) ) )
- Voeg een DG4ODBC-item toe aan
%ORACLE_HOME%\network\admin\tnsnames.ora
die de SID_NAME specificeert die in de vorige stap is gemaakt. Bijvoorbeeld:SPARK = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = oracle_host)(PORT = 1521)) (CONNECT_DATA = (SID = spark) ) (HS = OK) )
Vervang oracle_host met de hostnaam van uw Oracle-machine.
- Start (of herstart) de Oracle Listener:
cd %ORACLE_HOME%\bin lsnrctl stop lsnrctl start
- Maak verbinding met uw Oracle-database in SQL*Plus.
- Maak in SQL*Plus een databasekoppeling voor de doel-Apache Spark-instantie. Bijvoorbeeld:
CREATE PUBLIC DATABASE LINK SPARKLINK CONNECT TO "mydummyuser" IDENTIFIED BY "mydummypassword" USING 'spark';
- Probeer uw Apache Spark-gegevens op te vragen. Bijvoorbeeld:
SELECT * FROM "MyTable"@SPARKLINK;
Opmerkingen
- Als je problemen hebt om verbinding te maken met Apache Spark vanuit Oracle, schakel dan DG4ODBC-tracering in en controleer de traceerbestanden die zijn geschreven naar de
%ORACLE_HOME%\hs\trace
map. Om DG4ODBC-tracering in te schakelen, voegt u de regelHS_FDS_TRACE_LEVEL = DEBUG
toe naarinitspark.ora
en start / herstart vervolgens de Oracle-listener. Als detrace
directory bestaat niet, maak deze aan. - Als u ODBC Driver Manager-tracering inschakelt, maar geen traceerbestand of een leeg traceerbestand krijgt (controleer op C:\SQL.log), wijzig dan de locatie van het traceerbestand in de Windows TEMP-directory. Bijvoorbeeld
C:\Windows\Temp\SQL.log
.