解压存储在 Azure ADLS Gen2 中的 .Z 文件
Decompressing .Z file stored in Azure ADLS Gen2
我有一个 .Z 文件存储在 Azure ADLS Gen2 中。我想解压ADLS中的文件,我尝试用ADF和C#解压,发现不支持.Z。我也试过使用Apache Common Compress Lib解压,但无法读取InputStream中的文件。
谁能知道我们如何在 Scala 中使用 Apache lib 解压缩文件。
.Z
个文件是 .gzip
个文件,因此您可以尝试这种方法
import java.io.{BufferedReader, File, FileInputStream, InputStreamReader}
import java.util.zip.GZIPInputStream
object UnzipFiles {
def decompressGzipOrZFiles(file: File, encode: String): BufferedReader = {
val fis = new FileInputStream(file)
val gzis = new GZIPInputStream(fis)
val isr = new InputStreamReader(gzis, encode)
new BufferedReader(isr)
}
def main(args: Array[String]): Unit = {
val path = new File("/home/cloudera/files/my_file.Z")
// print to the console
decompressGzipOrZFiles(path,"UTF-8").lines().toArray.foreach(println)
}
}
或者您也可以按照此操作
def uncompressGzip(myFileDotZorGzip: String): Unit = {
import java.io.FileInputStream
import java.util.zip.GZIPInputStream
try {
val gzipInputStream = new GZIPInputStream(new FileInputStream(myFileDotZorGzip))
try {
val tam = 128
val buffer = new Array[Byte](tam)
do {
gzipInputStream.read(buffer)
gzipInputStream.skip(tam)
//do something with data
print(buffer.foreach(b => print(b.toChar)))
} while(gzipInputStream.read() != -1)
} finally {
if (gzipInputStream != null) gzipInputStream.close()
}
}
}
希望对您有所帮助。
我有一个 .Z 文件存储在 Azure ADLS Gen2 中。我想解压ADLS中的文件,我尝试用ADF和C#解压,发现不支持.Z。我也试过使用Apache Common Compress Lib解压,但无法读取InputStream中的文件。
谁能知道我们如何在 Scala 中使用 Apache lib 解压缩文件。
.Z
个文件是 .gzip
个文件,因此您可以尝试这种方法
import java.io.{BufferedReader, File, FileInputStream, InputStreamReader}
import java.util.zip.GZIPInputStream
object UnzipFiles {
def decompressGzipOrZFiles(file: File, encode: String): BufferedReader = {
val fis = new FileInputStream(file)
val gzis = new GZIPInputStream(fis)
val isr = new InputStreamReader(gzis, encode)
new BufferedReader(isr)
}
def main(args: Array[String]): Unit = {
val path = new File("/home/cloudera/files/my_file.Z")
// print to the console
decompressGzipOrZFiles(path,"UTF-8").lines().toArray.foreach(println)
}
}
或者您也可以按照此操作
def uncompressGzip(myFileDotZorGzip: String): Unit = {
import java.io.FileInputStream
import java.util.zip.GZIPInputStream
try {
val gzipInputStream = new GZIPInputStream(new FileInputStream(myFileDotZorGzip))
try {
val tam = 128
val buffer = new Array[Byte](tam)
do {
gzipInputStream.read(buffer)
gzipInputStream.skip(tam)
//do something with data
print(buffer.foreach(b => print(b.toChar)))
} while(gzipInputStream.read() != -1)
} finally {
if (gzipInputStream != null) gzipInputStream.close()
}
}
}
希望对您有所帮助。