Hi Adam,

Could you try building spark with profile -Pkinesis-asl.
mvn -Pkinesis-asl -DskipTests clean package

refers to 'Running the Example' section.
https://spark.apache.org/docs/latest/streaming-kinesis-integration.html

In fact, I've seen same issue and have been able to use the AWS SDK by trying the above. I've also tried to use 'spark.files.userClassPathFirst' flag, and it doesn't work.

Regards,
Yuya Urano


On 2015/03/13 3:50, Adam Lewandowski wrote:
I'm trying to use the AWS SDK (v1.9.23) to connect to DynamoDB from within a Spark application. Spark 1.2.1 is assembled with HttpClient 4.2.6, but the AWS SDK is depending on HttpClient 4.3.4 for it's communication with DynamoDB. The end result is an error when the app tries to connect to DynamoDB and gets Spark's version instead:
java.lang.NoClassDefFoundError: org/apache/http/client/methods/HttpPatch
at com.amazonaws.http.AmazonHttpClient.<clinit>(AmazonHttpClient.java:129)
at com.amazonaws.AmazonWebServiceClient.<init>(AmazonWebServiceClient.java:120) at com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient.<init>(AmazonDynamoDBClient.java:359) Caused by: java.lang.ClassNotFoundException: org.apache.http.client.methods.HttpPatch

Including HttpClient 4.3.4 as user jars doesn't improve the situation much: java.lang.NoSuchMethodError: org.apache.http.params.HttpConnectionParams.setSoKeepalive(Lorg/apache/http/params/HttpParams;Z)V at com.amazonaws.http.HttpClientFactory.createHttpClient(HttpClientFactory.java:95)

I've seen the documenation regarding the 'spark.files.userClassPathFirst' flag and have tried to use it thinking it would resolve this issue. However, when that flag is used I get an NoClassDefFoundError on 'scala.Serializable':
java.lang.NoClassDefFoundError: scala/Serializable
...
at org.apache.spark.executor.ChildExecutorURLClassLoader$userClassLoader$.findClass(ExecutorURLClassLoader.scala:46)
...
Caused by: java.lang.ClassNotFoundException: scala.Serializable

This seems odd to me, since scala.Serializable is included in the spark assembly. I thought perhaps my app was compiled against a different scala version than spark uses, but eliminated that possibility by using the scala compiler directly out of the spark assembly jar with identical results.

Has anyone else seen this issue, had any success with the "spark.files.userClassPathFirst" flag, or been able to use the AWS SDK? I was going to submit this a Spark JIRA issue, but thought I would check here first.

Thanks,
Adam Lewandowski


Reply via email to