1
나는 파일에서 RDD[String]
을 가지고 :RDD [String]을 RDD [(String, String)]로 변환하려면 어떻게해야합니까?
val file = sc.textFile("/path/to/myData.txt")
MYDATA의 형식 :
>str1_name
ATCGGKFKKVKKFKRLFFVLFLRL
FDJKALGFJVKRIKFKVKFGKLRL
...
FJDLALLLGL //the last line of str1
>str2_name
ATCGGKFKKVKKFKRLFFVLFLRL
FDJKALGFJVKRIKFKVKFGKLRL
...
FJDLALLLGL //the last line of str2
>str3_name
...
어떻게 구조 RDD[(String, String)]
에 파일에서 데이터를 변환해야합니까?
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.io.{LongWritable, Text}
import org.apache.hadoop.mapreduce.lib.input.TextInputFormat
val conf = new Configuration
conf.set("textinputformat.record.delimiter", ">")
// genome.txt contains the records provided in the question without the "..."
val dataset = sc.newAPIHadoopFile("./data/genome.txt", classOf[TextInputFormat], classOf[LongWritable], classOf[Text], conf)
val data = dataset.map(x=>x._2.toString)
은의 데이터
를 살펴 보자 : 예를 들어 은trancRDD(
(str1_name, ATCGGKFKKVKKFKRLFFVLFLRLFDJKALGFJVKRIKFKVKFGKLRL),
(str2_name, ATCGGKFKKVKKFKRLFFVLFLRLFDJKALGFJVKRIKFKVKFGKLRL),
...
)
우리는 사용자 정의 하프 입력 형식을 사용하여 비슷한 작업을 수행했지만 그다지 중요하지 않습니다. 내가 너라면, 나는 입력을 Spark-friendly 형식으로 변환하는 작은 프로그램을 작성하고 싶다. – maasg
원하는 변환은 현재의 "before"요소 (">"로 시작하는 이전 줄)에 따라 다르기 때문에 이전의> 줄이 파티션에 없으므로 실제로는 파티션간에 배포 할 수 없습니다. @maasg가 말했듯이, 파일을 올바른 형식으로 가져 오기위한 몇 가지 전처리가 더 좋을 것입니다. –
감사합니다! @maasg Paul – fanhk