Şu satırı dahil ederiz
import com.hazelcast.jet.pipeline.file.FileSourcesBuilder;
Not : İsmi FileSourceBuilder olan iki tane sınıf var.
1. com.hazelcast.jet.pipeline.FileSourcesBuilder - Kullanmayın
2. com.hazelcast.jet.pipeline.file.FileSourcesBuilder
FileSources.files() metodu da bu sınıfı döner.
build
Metodun içi şöyle. public BatchSource<T> build() {ProcessorMetaSupplier metaSupplier = buildMetaSupplier(); return Sources.batchFromProcessor("...", metaSupplier); }
buildMetaSupplier metodu
Metodun içi şöyle.
public ProcessorMetaSupplier buildMetaSupplier() { ... FileSourceConfiguration<T> fsc = new FileSourceConfiguration<>( path, glob, format, sharedFileSystem, ignoreFileNotFound, options ); if (shouldUseHadoop()) { ... } return new LocalFileSourceFactory().create(fsc); }
format metodu
Okunacak dosya formatı ve çıktı olarak kullanılacak sınıf belirtilir. Şöyle yarız
FileFormat.avro(Foo.class) FileFormat.csv(Foo.class) FileFormat.json(Foo.class)) FileFormat.text() FileFormat.<SpecificUser>parquet() FileFormat.bytes()
Örnek - CSV
Şöyle yaparız
List<String> fieldNames = new ArrayList<>(); fieldNames.add("foo"); fieldNames.add("bar"); BatchSource<String[]> source = FileSources.files("directory") .glob("file.csv") .format(FileFormat.csv(fieldNames)) .build();
Örnek - parquet
Şöyle yaparız. Burada Apache Parquet formatında bir şey okunuyor
BatchSource<SpecificUser> source = FileSources.files("/data") .glob("users.parquet") .format(FileFormat.<SpecificUser>parquet()) .useHadoopForLocalFiles(true) .build();
glob metodu
Örnek
Şöyle yaparız. Her dosyayı satır satır okur
Pipeline p = Pipeline.create(); p.readFrom(Sources.filesBuilder(directory.getPath()) .glob("*") .build(Util::entry)) .writeTo(Sinks.list(list));
Hiç yorum yok:
Yorum Gönder