Для экспертов по scala это может быть глупым вопросом, но я, как новичок, сталкиваюсь с трудностями в поиске решения. Любые указатели помогут.
Я установил 3 файла в папке HDFS по именам:
fileFirst.dat
fileSecond.dat
fileThird.dat
Не обязательно, что они будут храниться в любом порядке. fileFirst.dat
может быть создано в самом конце, поэтому ls
каждый раз будет показывать различный порядок файлов.
Моя задача - объединить все файлы в один файл в следующем порядке:
файл fileFirst, затем fileSecond, и, наконец, fileThird. с новой строкой в качестве разделителя, без пробелов.
Я попробовал некоторые идеи, но не смог придумать что-то работающее. Каждый раз порядок комбинации портится.
Ниже моя функция объединять все, что приходит:
def writeFile(): Unit = {
val in: InputStream = fs.open(files(i).getPath)
try {
IOUtils.copyBytes(in, out, conf, false)
if (addString != null) out.write(addString.getBytes("UTF-8"))
} finally in.close()
}
Files
определяется следующим образом:
val files: Array[FileStatus] = fs.listStatus(srcPath)
Это часть большой функции, в которой я передаю все аргументы, используемые в этом методе. После того, как все будет сделано, я сделаю out.close()
, чтобы закрыть поток вывода.
Любые идеи приветствуются, даже если они противоречат логике записи файла, которую я пытаюсь сделать; просто пойми, что я не так хорош в scala
; на данный момент:)