Ş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