如果您想知道我是如何解决的,请转到here。
我的目录结构如下。在数据目录内,我有一个名为malloc
的文件夹。里面有gz压缩文件。我只需要一个以mta.gz和dfr.gz结尾的日期(当前)的文件。每个date_latter
文件夹都有不同数量的这些文件。我需要将mta文件复制到名为mta的文件夹,将dfr文件复制到dfr文件夹。我希望它们仍然是压缩的,但如果不是那样的话。
date_latter
目前我有
data
--20170202_A
----20170202A(some_random_string)mta.gz
----20170202A(some_random_string)dfr.gz
----20170202A(some_random_string)crr.gz
--20170202_B
----20170202B(some_random_string)mta.gz
----20170202B(some_random_string)dfr.gz
----20170202B(some_random_string)crr.gz
--20170202_C
--20170203_A
--20170203_B
--20170203_C
--20170201_A
--20170201_B
--20170201_C
当我尝试运行println(path.getPath)时,我得到了所有mta文件的路径,但是当我尝试实际复制时
def main(args: Array[String]) = {
val conf = new Configuration()
val sparkConf = new SparkConf()
val sc = new SparkContext(sparkConf)
val mta = "mta"
val rcr = "dfr"
val sub = "sub"
val inPath = "/user/comverse/data/20170404_*/*" + mta + ".gz"
val fs = FileSystem.get( conf )
val fromPath = fs.globStatus(new Path(inPath))
for(path <- fromPath) {
sc.textFile(path.getPath.toString).saveAsTextFile("/apps/hive/warehouse/adoc.db/fct_evkuzmin/file_" + mta)
// println(path.getPath)
}
sc.stop()
}
和fct_evkuzmin看起来像
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://nameservice1/apps/hive/warehouse/adoc.db/fct_evkuzmin/file_mta already exists
到底我想要
--/fct_evkuzmin/file_mta/_temporary/0/_temporary
----many folders named like `attempt_201704071536_0000_m_000000_0` with empty files inside
------attempt_201704071536_0000_m_000000_0(emty)