试图使用scala应用程序访问s3存储桶
问题描述:
我想使用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")
}}
答
我遇到了一个可能的解决方案是,Scala的IDE没有自动检测您的主类:
- 进入菜单 - >“运行” - > “运行配置”
- 点击“Scala应用程序”和“新启动配置”的图标
- 对于项目选择您的项目和主类(由于某种原因,不会自动检测)手动输入在你的情况)org.test.spark1.test
- 应用和运行
OR
你可以尝试使用火花提交不偏食本地运行星火工作。
spark-submit --class org.test.spark1.test --master local[8] {path to assembly jar}
另一件事,你永远不应该硬编码你的AWS证书。我建议你使用InstanceProfileCredentialsProvider。此凭据存在于与EC2实例的IAM角色关联的实例元数据中。
不需要'测试扩展App'和'main'方法。选择一个。 –
我删除了从代码扩展应用程序..但错误仍然存在 –