我想使用scala应用程序访问amazon s3存储桶。我在日食中设置了scala IDE。但是,当我尝试在我的本地(运行方式 - > Scala应用程序)上运行>应用程序时,它在控制台上给出以下>错误。错误:无法找到或加载主类org.test.spark1.test我试图运行一个简单的wordcount应用程序,我在其中访问存储在我的S3存储桶中的>文件并将结果存储在另一个文件中。请让我明白问题所在。
注意:我正在使用eclipse maven项目。我的scala应用程序代码是:
package org.test.spark1
import com.amazonaws._
import com.amazonaws.auth._
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import com.amazonaws.services.s3._
import com.amazonaws.services.s3.model.GetObjectRequest
import java.io.File;
object test extends App {
def main(args: Array[String]) {
val myAccessKey = "here is my key"
val mySecretKey = "here is my secret key"
val bucket = "nlp.spark.apps"
val conf = new SparkConf().setAppName("sample")
val sc = new SparkContext(conf)
val yourAWSCredentials = new BasicAWSCredentials(myAccessKey, mySecretKey)
val amazonS3Client = new AmazonS3Client(yourAWSCredentials)
// This will create a bucket for storage
amazonS3Client.createBucket("nlp-spark-apps2")
val s3data = sc.textFile("here is my url of text file")
s3data.flatMap(line =>
line.split(" "))
.map(word =>
(word, 1))
.reduceByKey(_ * _)
.saveAsTextFile("/home/hadoop/cluster-code2.txt")
}}
答案 0 :(得分:0)
我遇到的一个可能的解决方案是Scala IDE不会自动检测您的主类:
或强>
您可以尝试使用spark-submit在没有eclipse的情况下在本地运行Spark作业。
spark-submit --class org.test.spark1.test --master local[8] {path to assembly jar}
另外,您不应该硬编码您的AWS凭据。我建议你使用InstanceProfileCredentialsProvider。此凭据存在于与EC2实例的IAM角色关联的实例元数据中。