sql >> Database >  >> RDS >> Database

Apache Spark ODBC-stuurprogramma

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:

  1. Kies het tabblad Systeem-DSN en kies vervolgens Toevoegen.
  2. Kies in het dialoogvenster Nieuwe gegevensbron maken de optie Easysoft ODBC-Apache Spark-stuurprogramma en kies vervolgens Voltooien.
  3. Vul de velden in het dialoogvenster Easysoft ODBC-Apache Spark Driver DSN Setup in.
  4. 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.

  1. 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

  1. 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:

  1. Op de Gegevens tabblad, kies Nieuwe zoekopdracht> Van andere bron> Van ODBC .
  2. Kies de Apache Spark ODBC-gegevensbron wanneer daarom wordt gevraagd.
  3. Kies een tabel uit de beschikbare datasets.
  4. 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

  1. Maak een DG4ODBC init-bestand op uw Oracle-machine. Ga hiervoor naar de %ORACLE_HOME%\hs\admin map. Maak een kopie van het bestand initdg4odbc.ora . Geef het nieuwe bestand de naam initspark.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 .

  2. Zorg ervoor dat deze parameters en waarden aanwezig zijn in uw init-bestand:
    HS_FDS_CONNECT_INFO = MyApacheSparkDataSource
  3. Reageer op de regel die DG4ODBC-tracering mogelijk maakt. Bijvoorbeeld:
    #HS_FDS_TRACE_LEVEL = <trace_level>
    
  4. 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)
       )
     )
    
  5. 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.

  6. Start (of herstart) de Oracle Listener:
    cd %ORACLE_HOME%\bin
    lsnrctl stop
    lsnrctl start
    
  7. Maak verbinding met uw Oracle-database in SQL*Plus.
  8. 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';
    
  9. 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 regel HS_FDS_TRACE_LEVEL = DEBUG toe naar initspark.ora en start / herstart vervolgens de Oracle-listener. Als de trace 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 .

  1. Waarom levert een geparametriseerde query een veel langzamer queryplan op dan een niet-geparametriseerde query?

  2. Tabellen weergeven die zijn beïnvloed door trapsgewijze verwijderen

  3. ERROR 1130 (HY000):Host '' mag geen verbinding maken met deze MySQL-server

  4. Hoe bewaart u uuid als nummer?