Skip to content

Commit 1af1120

Browse files
committed
[query] remove non-primitives from scala fs
1 parent 0461108 commit 1af1120

7 files changed

Lines changed: 303 additions & 305 deletions

File tree

hail/hail/src/is/hail/expr/ir/GenericLines.scala

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ package is.hail.expr.ir
33
import is.hail.backend.spark.SparkBackend
44
import is.hail.collection.implicits.toRichIterator
55
import is.hail.io.compress.BGzipInputStream
6-
import is.hail.io.fs.{BGZipCompressionCodec, FS, FileStatus, Positioned, PositionedInputStream}
6+
import is.hail.io.fs.{
7+
getCodecFromPath, BGZipCompressionCodec, FS, FileStatus, Positioned, PositionedInputStream,
8+
}
79
import is.hail.io.tabix.{TabixLineIterator, TabixReader}
810
import is.hail.types.virtual.{TBoolean, TInt32, TInt64, TString, TStruct, Type}
911
import is.hail.utils._
@@ -12,7 +14,7 @@ import is.hail.variant.Locus
1214
import scala.annotation.meta.param
1315

1416
import org.apache.commons.io.input.{BoundedInputStream, ProxyInputStream}
15-
import org.apache.hadoop.io.compress.SplittableCompressionCodec
17+
import org.apache.hadoop.io.compress.SplittableCompressionCodec.READ_MODE
1618
import org.apache.spark.{Partition, TaskContext}
1719
import org.apache.spark.rdd.RDD
1820
import org.apache.spark.sql.Row
@@ -44,31 +46,31 @@ object GenericLines extends Logging {
4446
private var splitCompressed = false
4547
private val is: PositionedInputStream = {
4648
val rawIS = fs.openNoCompression(file)
47-
val codec = fs.getCodecFromPath(file, gzAsBGZ)
48-
if (codec == null) {
49-
assert(split || filePerPartition)
50-
rawIS.seek(start)
51-
rawIS
52-
} else if (codec == BGZipCompressionCodec) {
53-
assert(split || filePerPartition)
54-
splitCompressed = true
55-
val bgzIS =
56-
new BGzipInputStream(rawIS, start, end, SplittableCompressionCodec.READ_MODE.BYBLOCK)
57-
new ProxyInputStream(bgzIS) with Positioned {
58-
override def getPosition: Long = bgzIS.getVirtualOffset
59-
}
60-
} else {
61-
assert(!split || filePerPartition)
49+
getCodecFromPath(file, gzAsBGZ) match {
50+
case None =>
51+
assert(split || filePerPartition)
52+
rawIS.seek(start)
53+
rawIS
54+
case Some(BGZipCompressionCodec) =>
55+
assert(split || filePerPartition)
56+
splitCompressed = true
57+
val bgzIS =
58+
new BGzipInputStream(rawIS, start, end, READ_MODE.BYBLOCK)
59+
new ProxyInputStream(bgzIS) with Positioned {
60+
override def getPosition: Long = bgzIS.getVirtualOffset
61+
}
62+
case Some(codec) =>
63+
assert(!split || filePerPartition)
6264

63-
val delegate =
64-
BoundedInputStream
65-
.builder()
66-
.setInputStream(codec.makeInputStream(rawIS))
67-
.get()
65+
val delegate =
66+
BoundedInputStream
67+
.builder()
68+
.setInputStream(codec.makeInputStream(rawIS))
69+
.get()
6870

69-
new ProxyInputStream(delegate) with Positioned {
70-
override def getPosition: Long = delegate.getCount
71-
}
71+
new ProxyInputStream(delegate) with Positioned {
72+
override def getPosition: Long = delegate.getCount
73+
}
7274
}
7375
}
7476

@@ -292,9 +294,9 @@ object GenericLines extends Logging {
292294

293295
val contexts = fileStatuses.flatMap { case (fileListEntry, fileNum) =>
294296
val size = fileListEntry.getLen
295-
val codec = fs.getCodecFromPath(fileListEntry.getPath, gzAsBGZ)
297+
val codec = getCodecFromPath(fileListEntry.getPath, gzAsBGZ)
296298

297-
val splittable = codec == null || codec == BGZipCompressionCodec
299+
val splittable = codec.isEmpty || codec.contains(BGZipCompressionCodec)
298300
if (splittable && !filePerPartition) {
299301
var fileNParts = ((totalPartitions.toDouble * size) / totalSize + 0.5).toInt
300302
if (fileNParts == 0)
@@ -306,7 +308,7 @@ object GenericLines extends Logging {
306308
.map { i =>
307309
val start = partScan(i)
308310
var end = partScan(i + 1)
309-
if (codec != null)
311+
if (codec.isDefined)
310312
end = makeVirtualOffset(end, 0)
311313
Row(i, fileNum, fileListEntry.getPath, start, end, true)
312314
}

hail/hail/src/is/hail/expr/ir/MatrixWriter.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import is.hail.expr.ir.lowering.TableStage
1212
import is.hail.expr.ir.streams.StreamProducer
1313
import is.hail.io._
1414
import is.hail.io.bgen.BgenSettings
15-
import is.hail.io.fs.FS
15+
import is.hail.io.fs.{getCodecExtension, FS}
1616
import is.hail.io.gen.{BgenWriter, ExportGen}
1717
import is.hail.io.index.StagedIndexWriter
1818
import is.hail.io.plink.{BitPacker, ExportPlink}
@@ -758,7 +758,7 @@ case class MatrixVCFWriter(
758758

759759
ExportVCF.checkFormatSignature(tm.entryType)
760760

761-
val ext = ctx.fs.getCodecExtension(path)
761+
val ext = getCodecExtension(path)
762762

763763
val folder = if (exportType == ExportType.CONCATENATED)
764764
ctx.createTmpPath("write-vcf-concatenated")
@@ -1278,7 +1278,7 @@ case class VCFExportFinalizer(
12781278
region: Value[Region],
12791279
): Unit = {
12801280
val ctx: ExecuteContext = cb.emb.ctx
1281-
val ext = ctx.fs.getCodecExtension(outputPath)
1281+
val ext = getCodecExtension(outputPath)
12821282

12831283
val annotations = writeAnnotations.getOrAssert(cb).asBaseStruct
12841284

hail/hail/src/is/hail/expr/ir/TableWriter.scala

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import is.hail.expr.ir.functions.StringFunctions
1313
import is.hail.expr.ir.lowering.{LowererUnsupportedOperation, TableStage}
1414
import is.hail.expr.ir.streams.StreamProducer
1515
import is.hail.io.{AbstractTypedCodecSpec, BufferSpec, OutputBuffer, TypedCodecSpec}
16-
import is.hail.io.fs.FS
16+
import is.hail.io.fs.{getCodecExtension, FS}
1717
import is.hail.io.index.StagedIndexWriter
1818
import is.hail.rvd.{AbstractRVDSpec, IndexSpec, RVDPartitioner, RVDSpecMaker}
1919
import is.hail.types._
@@ -705,7 +705,7 @@ case class TableTextWriter(
705705
override def lower(ctx: ExecuteContext, ts: TableStage, r: RTable): IR = {
706706
require(exportType != ExportType.PARALLEL_COMPOSABLE)
707707

708-
val ext = ctx.fs.getCodecExtension(path)
708+
val ext = getCodecExtension(path)
709709

710710
val folder = if (exportType == ExportType.CONCATENATED)
711711
ctx.createTmpPath("write-table-concatenated")
@@ -832,7 +832,7 @@ case class TableTextFinalizer(
832832
region: Value[Region],
833833
): Unit = {
834834
val ctx: ExecuteContext = cb.emb.ctx
835-
val ext = ctx.fs.getCodecExtension(outputPath)
835+
val ext = getCodecExtension(outputPath)
836836
val partPaths = writeAnnotations.getOrFatal(cb, "write annotations cannot be missing!")
837837
val files = partPaths.castTo(cb, region, SJavaArrayString(true), false).asInstanceOf[
838838
SJavaArrayStringValue

0 commit comments

Comments
 (0)