다음 스칼라 코드를 사용하여 S3의 텍스트 파일을 만들고 AWS EMR의 Apache Spark를 사용합니다.EMR의 스파크를 사용하여 S3의 파일에 작성
def createS3OutputFile() {
val conf = new SparkConf().setAppName("Spark Pi")
val spark = new SparkContext(conf)
// use s3n !
val outputFileUri = s"s3n://$s3Bucket/emr-output/test-3.txt"
val arr = Array("hello", "World", "!")
val rdd = spark.parallelize(arr)
rdd.saveAsTextFile(outputFileUri)
spark.stop()
}
def main(args: Array[String]): Unit = {
createS3OutputFile()
}
나는 fat JAR을 생성하여 S3에 업로드합니다. I 클러스터 마스터에 다음 SSH와 함께 코드 실행
spark-submit \
--deploy-mode cluster \
--class "$class_name" \
"s3://$s3_bucket/$app_s3_key"
나는 S3 콘솔에서이 메시지가 표시되는 대신 파일의 폴더가 있습니다.
각 폴더 (예를 들어, 테스트 용 3.txt) 블록 파일의 긴 목록을 포함한다. 아래 사진 :
어떻게 출력 내 스파크 작업의 출력으로 S3에 대한 간단한 텍스트 파일을합니까? 이 일을
내가 스칼라 극장과 스파크에 새로운 해요 확인합니다. 스파크 작업의 결과를 얻는 "표준"방법은 무엇입니까? 내가 그랬던 것처럼 파일에 쓰고 있습니까? 원시 Java 함수를 사용하여 파일을 작성합니까? – BlackSheep
@BlackSheep 정말 당장의 작업에 달려 있습니다. 공식적인 방법은 없습니다. 파일을 생성 할 때 각 RDD 파티션은 사용자가 지시 한 작업을 수행하므로이 경우 각 RDD 파티션은 파일을 만들고 자신의 파일에 쓰게됩니다. – TheM00s3
이것은 여전히 폴더 구조를 생성하지만 하나의 자식 'part-00000' 만 있습니다. – Tim