Ошибка Scala чтения потока данных AWS Kinesis из Spark (java.lang.NoSuchMethodError)
Я использую следующий код для создания потока данных, но когда я отправляю код, я получаю NoSuchMethodError для KinesisUtils.
// AWS KINESIS
val endPoint = "https://kinesis.us-east-1.amazonaws.com"
val streamName = "PRICESIZE_REALTIME_STAGING"
val credentials = new DefaultAWSCredentialsProviderChain().getCredentials()
require(credentials != null, "No AWS credentials found")
val kinesisClient = new AmazonKinesisClient(credentials)
kinesisClient.setEndpoint(endPoint)
val numShards = kinesisClient.describeStream(streamName).getStreamDescription().getShards().size
// STREAM`
val kinesisStream = KinesisUtils.createStream(ssc, appName, streamName,
endPoint, Region.getRegion(Regions.US_EAST_1).toString,
InitialPositionInStream.LATEST, Duration(frequesncyMilli), StorageLevel.MEMORY_AND_DISK_2)
// Convert each line of Array[Byte] to String, and split into words
val words = kinesisStream.flatMap(byteArray => new String(byteArray, "UTF-8").split(" "))
Я строю с помощью: mvn -Pkinesis-asl -DskipTests чистой упаковки.
Отправка создает исключение в потоке "main" java.lang.NoSuchMethodError:
org.apache.spark.streaming.StreamingContext.withNamedScope(Ljava/lang/String;Lscala/Function0;)Ljava/lang/Object; at
org.apache.spark.streaming.kinesis.KinesisUtils$.createStream(KinesisUtils.scala:67)
Который включает в себя банку Kinesis ASL в полученной банке Uber
[INFO] Including org.apache.spark:spark-streaming-kinesis-asl_2.11:jar:1.6.0-SNAPSHOT in the shaded jar.
[INFO] Including com.amazonaws:amazon-kinesis-client:jar:1.3.0 in the shaded jar.
[INFO] Including com.amazonaws:aws-java-sdk-kinesis:jar:1.9.16 in the shaded jar.