spark는hadoop에서 파일 이름을 가져오는 기능을 실현합니다
//
InputSplit inputSplit=(InputSplit)context.getInputSplit();
String filename=((FileSplit)inputSplit).getPath().getName();
이것은 Hadoop1 버전에서 제공하는 방법입니다.
spark에서도 이 기능을 실현할 수 있다. 사용하는 방식은 로컬 테스트 코드이고 spark는 로컬에서 실행된다. 코드는 다음과 같다.
object Mytest3 {
def main(args: Array[String]): Unit = {
val conf=new SparkConf
conf.setMaster("local[2]").setAppName("mytest")
System.setProperty("hadoop.home.dir","E:\\hadoop2\\hadoop-2.6.0")
val sc=new SparkContext(conf)
val fileRDD=sc.hadoopFile[LongWritable, Text, TextInputFormat]("C:\\sparksplit\\*")
val hadoopRdd = fileRDD.asInstanceOf[HadoopRDD[LongWritable, Text]]
val fileAndLine = hadoopRdd.mapPartitionsWithInputSplit((inputSplit:InputSplit,iterator:Iterator[(LongWritable, Text)]) =>{
val file = inputSplit.asInstanceOf[FileSplit]
iterator.map(x=>{file.getPath.toString()+"\t"+x._2})
}
)
fileAndLine.foreach(println)
}
}
여기서 주의해야 할 것은 도입된jar 패키지는 틀리지 말고 틀리면 방법이 틀릴 수 있다는 것이다.도입된jar 패키지는 다음과 같습니다:
import cn.wjpt.AuditLogManager
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf
import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
import org.apache.hadoop.io.Text
import org.apache.hadoop.io.LongWritable
import org.apache.spark.rdd.HadoopRDD
import org.apache.hadoop.mapred.InputSplit
import org.apache.hadoop.mapred.FileSplit
import org.apache.hadoop.mapred.TextInputFormat
이 정도면 됐어.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Spark 프로그래밍 기본 사항(Python 버전)참조 웹사이트: Hadoop 환경이 있어야 합니다. 내 다른 블로그를 읽을 수 있습니다. 2.Spark 환경 변수 파일 수정 spark env SH 파일(vi ./conf/spark-env.sh)을 편집하고 첫 번째...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.