Я выполняю потоковое считывание объекта с использованием BufferedReader.Clojure/Java: наиболее эффективный метод минимизации потребления полосы пропускания при выполнении сложных операций над потоком данных Amazon S3
мне нужно сделать две вещи с этим объектом:
- передать его читателю SuperCSV Csv
- Получить исходные линии и держать их в (Clojure) ленивым последовательность
В настоящее время мне приходится использовать два разных BufferedReaders: один в качестве аргумента для класса чтения SuperCSV CSV и один для инициализации ленивой последовательности исходных строк. Я эффективно загружаю объект S3 дважды, что дорого ($) и медленный.
Один из моих коллег указал, что что-то похожее на команду «tee» Unix - это то, что я ищу. BufferedReader, который можно каким-то образом «разбить», загрузить фрагмент данных и передать копию как для ленивой последовательности, так и для функции чтения csv.
Я также изучаю, можно ли обернуть ленивую последовательность в BufferedReader и передать , что в супер csv. У меня было несколько проблем с кучей Java, когда передавали очень большие ленивые последовательности нескольким потребителям, поэтому я немного обеспокоен использованием этого решения.
Другое решение просто загружает файл локально, а затем открывает два потока в этом файле. Это устраняет оригинальную мотивацию потоковой передачи: позволяет начать работу с файлом, как только начнутся данные.
Окончательное решение, которое я бы рассматривал только в том случае, если ничего не работает, реализует мой собственный CSV-ридер, который возвращает как проанализированный CSV, так и оригинальную непараметрированную строку. Если вы использовали очень прочный CSV-ридер, который может возвращать как Java-Hash проанализированных CSV-данных, так и оригинальную строку без ссылок, пожалуйста, дайте мне знать!
Спасибо!
Я думаю, я немного не понимаю, как именно вы получаете своих персонажей из S3, может быть, немного более конкретный контекст? Я мог бы просто полностью упустить его, так что простите меня, что это так, может быть, немного олл-дауннинг-Крюгер. – Isaac
Эй, Исаак, я использую функциональность, которую я создал с помощью jclouds blobstore.clj, чтобы вернуть BufferedReader, который позволяет мне читать объекты Amazon S3. – jkndrkn