2016-09-29 174 views
0

我想使用scala应用程序访问amazon s3存储桶。我在eclipse中设置了scala IDE。但是,当我尝试在我的本地(运行 - > Scala应用程序)上运行>应用程序时,它会在控制台上出现以下错误。错误:无法找到或加载主类org.test.spark1.test我尝试运行一个简单的wordcount应用程序,其中我正在访问存储在我的S3存储桶中的文件,并将结果存储在另一个文件中。请让我明白这个问题会是什么。试图使用scala应用程序访问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

不需要'测试扩展App'和'main'方法。选择一个。 –

+0

我删除了从代码扩展应用程序..但错误仍然存​​在 –

回答

0

我遇到了一个可能的解决方案是,Scala的IDE没有自动检测您的主类:

  1. 进入菜单 - >“运行” - > “运行配置”
  2. 点击“Scala应用程序”和“新启动配置”的图标
  3. 对于项目选择您的项目和主类(由于某种原因,不会自动检测)手动输入在你的情况)org.test.spark1.test
  4. 应用和运行

OR

你可以尝试使用火花提交不偏食本地运行星火工作。

spark-submit --class org.test.spark1.test --master local[8] {path to assembly jar} 

另一件事,你永远不应该硬编码你的AWS证书。我建议你使用InstanceProfileCredentialsProvider。此凭据存在于与EC2实例的IAM角色关联的实例元数据中。

相关问题