Aerospike spark connect enterprise addition Un-licensed server error

Hi, I have installed Aerospike Enterprise edition (version: “Aerospike Enterprise Edition build 4.5.3.4”). And copied feature-key-file at “/etc/aerospike/features.conf” which I have recieved from Aerospike team. And followed steps for " Aerospike Connect and Spark integrated" mentioned at https://www.aerospike.com/docs/connectors/enterprise/spark/installation.html. Still I am getting error while running

var client=AerospikeConnection.getClient(AerospikeConfig(“localhost”,3000,1000))

in spark-shell. Error is following: > com.aerospike.client.AerospikeException: Error -1: Un-licensed server

  at com.aerospike.spark.sql.AerospikeConnection$.newClient(AerospikeConnection.scala:99)
  at com.aerospike.spark.sql.AerospikeConnection$.getClient(AerospikeConnection.scala:63)
  ... 51 elided

Any suggestion why this is happening?

You need to use spark.conf to set the location of keypath as below

spark.conf.set("aerospike.keyPath", "/etc/aerospike/features.conf")

to look for the license file (and that needs to be in every node that is running spark executors)? Check the example below:

import com.aerospike.spark.sql._
import com.aerospike.client.AerospikeClient
import com.aerospike.client.Bin
import com.aerospike.client.Key
import com.aerospike.client.Value
import com.aerospike.client.AerospikeClient
import com.aerospike.client.Host
import com.aerospike.client.policy.ClientPolicy

// These are specific info about the Aerospike instance

var dbHost = "rhes75"
var dbPort = "3000"
var dbConnection = "trading_user_RW"
var namespace = "test"
var dbSet = "sample"
var dbPassword = "xxxxx"

     val sqlContext = spark.sqlContext

     spark.conf.set("aerospike.seedhost", dbHost)
     spark.conf.set("aerospike.port", dbPort)
     spark.conf.set("aerospike.namespace",namespace)
     spark.conf.set("aerospike.set", dbSet)
     **spark.conf.set("aerospike.keyPath", "/etc/aerospike/features.conf")**
     spark.conf.set("aerospike.user", dbConnection)
     spark.conf.set("aerospike.password", dbPassword)

// Load the Aerospike set into DataFrame in Spark. All the credentials are coming from the spark.conf parameters

   val dfRead  = sqlContext.read.
      format("com.aerospike.spark.sql").
      option("aerospike.batchMax", 10000).
      load

HTH

No luck. Still got same error.

Hi,

Have you actually removed the community edition of Aerospike and installed the enterprise edition?

Also what is in your features.conf file? Can you share it? This features.conf is usually a soft link to the actual license file downloaded from Aerospike Example

features.conf -> /etc/aerospike/features-<COMPANY_NAME>.conf

Do you have a line like below in features.conf file

raf-realtime-analysis-framework

HTH

Thanks Mich for reply. It is fresh installation. feature file has content like this( redacted for obvious reason)

feature-key-version 1 serial-number 3XXXXXXXX

asdb-strong-consistency true

----- SIGNATURE ------------------------------------------------

Some random string here== ----- END OF SIGNATURE -----------------------------------------

It does not have line “raf-realtime-analysis-framework”

Ok so it may worth checking with Aerospike sales to confirm that you have indeed license for Aerospike-spark connector.

Also if you running spark on the same host as Aerospike installed and I expect you to use a different unix login for spark, can that login read the Aerospike license file?

Do

 ls -l  /etc/aerospike/features.conf

and send it here please. cat that features.conf file as spark user and see you can read it?

HTH,

Mich

Thanks Mich, I have asked Aerospike sales team about this.