Привет! Я хотел проверить функцию пользовательского шага EMR.
Я создал простое приложение для 2 классов Scala, которое записывает текстовый файл на S3.
Вот дерево
├───src
├───main
│ └───scala
│ └───com
│ └───myorg
-S3Lister.scala
-FindMaxDate.scala
└───test
└───scala
└───samples
После сборки пакета с mvn package
я отправил его в emr, указав в качестве основного класса com.myorg.FindMaxDate
. Однако это всегда дает мне эту ошибку:
Caused by: java.lang.ClassNotFoundException: scala.Function1
Любая идея, что эта ошибка может быть вызвано?
Я использовал архетие: net.alchim31.maven:scala-archetype-simple version: 1.6
Спасибо
Вот мой основной класс:
object FindMaxDate {
def main(args : Array[String]) {
val date_pattern = "\\d{8}".r
val date_format = new SimpleDateFormat("yyyyMMdd")
var objectList: List[S3ObjectSummary] = S3Lister.listObjectsInBucket("mycloud-unzipped","sociodemos")
val sum: scala.collection.immutable.List[Date] = objectList.asScala
.map(file => date_pattern.findFirstIn(file.getKey()))
.map(date => date.getOrElse(null))
.filter(date => date != null)
.map(date => date_format.parse(date)).toList
S3Lister.writebjectToS3("max_date:" + sum.max + "\n min_date:" + sum.min + "\n",
"mycloud-source","dates.txt","sociodemos")
}
}
Вот зависимости:
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-s3</artifactId>
<version>1.11.550</version>
</dependency> ... below there are all the default ones for testing