spark.read.textFile()读取.tar.gz文件数据问题
从官网的描述中spark.textFile方法是可以读取压缩文件.tar.gz. 当我测试的时候发现文件从一个文件读取到另外一个文件的时候,spark会在值中加入“文件名 0ustar root root”放到下个读取文件的第一个行。
我想问一下是我写的有问题还是本来就是这样?如果是如何避免。
解决思路:
import java.nio.charset.{Charset, StandardCharsets}
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream
import org.apache.spark.SparkContext
import org.apache.spark.input.PortableDataStream
import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, SparkSession}
import scala.util.Try
/**
* @Description:
*
* 提取 tar.gz 压缩文件的文本内容
*/
object ExtractTarGzipFileUtil {
/**
* 提取 tar.gz 压缩文件的文本内容
*
* @param ps
* @param n
* @return
*/
def extractTarGzipFiles(ps: PortableDataStream, n: Int = 1024) = Try {
//tar.gz格式的压缩文件提取
var tar: TarArch