How to work with Adobe Target Data in Apache Spark using SQL



Access and process Adobe Target Data in Apache Spark using the CData JDBC Driver.

Apache Spark is a fast and general engine for large-scale data processing. When paired with the CData JDBC Driver for Adobe Target, Spark can work with live Adobe Target data. This article describes how to connect to and query Adobe Target data from a Spark shell.

The CData JDBC Driver offers unmatched performance for interacting with live Adobe Target data due to optimized data processing built into the driver. When you issue complex SQL queries to Adobe Target, the driver pushes supported SQL operations, like filters and aggregations, directly to Adobe Target and utilizes the embedded SQL engine to process unsupported operations (often SQL functions and JOIN operations) client-side. With built-in dynamic metadata querying, you can work with and analyze Adobe Target data using native data types.

Install the CData JDBC Driver for Adobe Target

Download the CData JDBC Driver for Adobe Target installer, unzip the package, and run the JAR file to install the driver.

Start a Spark Shell and Connect to Adobe Target Data

  1. Open a terminal and start the Spark shell with the CData JDBC Driver for Adobe Target JAR file as the jars parameter:
    $ spark-shell --jars /CData/CData JDBC Driver for Adobe Target/lib/cdata.jdbc.adobetarget.jar
    
  2. With the shell running, you can connect to Adobe Target with a JDBC URL and use the SQL Context load() function to read a table.

    To connect to Adobe Target, you must provide the Tenant property along with OAuth connection properties mentioned below. Note that while other connection properties can influence processing behavior, they do not affect the ability to connect.

    To determine your Tenant name:

    1. Log in to Adobe Experience. The URL will look similar to: "https://experience.adobe.com/#/@mycompanyname/preferences/general-section".
    2. Extract the value after the "/#/@". In this example, it is "mycompanyname".
    3. Set the Tenant connection property to that value.

    User Accounts (OAuth)

    You must set AuthScheme to OAuthClient for all user account flows.

    Note: Adobe authentication via OAuth requires updating your token every two weeks.

    All Applications

    CData provides an embedded OAuth application that simplifies OAuth authentication. Alternatively, you can create a custom OAuth application. Review Creating a Custom OAuth App in the Help documentation for more information.

    Obtaining the OAuth Access Token

    Set the following properties to connect:

    • InitiateOAuth: Set to GETANDREFRESH to automatically perform the OAuth exchange and refresh the OAuthAccessToken as needed.
    • OAuthClientId : Set to the client Id assigned when you registered your app.
    • OAuthClientSecret : Set to the client secret assigned when you registered your app.
    • CallbackURL : Set to the redirect URI defined when you registered your app. For example: https://localhost:3333

    With these settings, the provider obtains an access token from Adobe Target, which it uses to request data. The OAuth values are stored in the location specified by OAuthSettingsLocation, ensuring they persist across connections.

    Built-in Connection String Designer

    For assistance in constructing the JDBC URL, use the connection string designer built into the Adobe Target JDBC Driver. Either double-click the JAR file or execute the jar file from the command-line.

    java -jar cdata.jdbc.adobetarget.jar
    

    Fill in the connection properties and copy the connection string to the clipboard.

    Configure the connection to Adobe Target, using the connection string generated above.

    scala> val adobetarget_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:adobetarget:Tenant=mycompanyname;").option("dbtable","Activities").option("driver","cdata.jdbc.adobetarget.AdobeTargetDriver").load()
    
  3. Once you connect and the data is loaded you will see the table schema displayed.
  4. Register the Adobe Target data as a temporary table:

    scala> adobetarget_df.registerTable("activities")
  5. Perform custom SQL queries against the Data using commands like the one below:

    scala> adobetarget_df.sqlContext.sql("SELECT Id, Name FROM Activities WHERE Type = AB").collect.foreach(println)

    You will see the results displayed in the console, similar to the following:

Using the CData JDBC Driver for Adobe Target in Apache Spark, you are able to perform fast and complex analytics on Adobe Target data, combining the power and utility of Spark with your data. Download a free, 30 day trial of any of the 200+ CData JDBC Drivers and get started today.

Ready to get started?

Download a free trial of the Adobe Target Driver to get started:

 Download Now

Learn more:

Adobe Target Icon Adobe Target JDBC Driver

Easily connect Java applications with real-time data. Use Adobe Target to manage the data that powers your applications.