Я настраиваю лямбда-функцию, которая выполняет выводы SageMaker с использованием алгоритма Random Cut Forest. Я успешно запустил пример Python RCF в блокноте jupyter, но я предпочитаю, чтобы моя лямбда была написана на Java, и я надеялся не использовать ведро s3 в этом процессе. Я знаю, что если бы моя лямбда была в python, то я могла бы передать свои данные, преобразовать их в кадр данных pandas, а затем запустить rcf_inference.predict(data)
, чтобы получить мои результаты. Но с Java это кажется невозможным.
Мне удалось выполнить пакетное преобразование с использованием следующего кода Java, но после изучения документации java aws-sdk похоже, что мой TransformDataSource должен иметь S3DataSource, а не какой-либо другой вид источник. Это прискорбно, потому что в моей лямбде уже есть данные, которые мне нужны, поэтому загрузка / выгрузка в / из корзины s3 не нужна.
String bucket = "test-bucket441";
String prefix = "sagemaker/rcf-benchmarks";
String trainedModel = "randomcutforest-2019-06-28-13-43-00-925";
AmazonSageMaker sm = AmazonSageMakerClientBuilder.standard().build();
TransformS3DataSource s3Source = new TransformS3DataSource()
.withS3DataType("S3Prefix")
.withS3Uri("s3://" + bucket + "/" + prefix);
TransformDataSource dataSource = new TransformDataSource()
.withS3DataSource(s3Source);
TransformInput input = new TransformInput()
.withContentType("text/csv")
.withDataSource(dataSource);
TransformOutput output = new TransformOutput()
.withS3OutputPath("s3://" + bucket + "/" + prefix + "/output")
.withAssembleWith("Line");
TransformResources resources = new TransformResources()
.withInstanceType("ml.m4.xlarge")
.withInstanceCount(1);
CreateTransformJobRequest jobRequest = new CreateTransformJobRequest()
.withTransformJobName("test-job")
.withModelName(trainedModel)
.withTransformInput(input)
.withTransformOutput(output)
.withTransformResources(resources);
sm.createTransformJob(jobRequest);
Кто-нибудь знает, как я могу создать CreateTranformJobRequest без использования корзины s3?