从java中的存档获取.tsv文件,而不解压缩存档

时间:2016-08-17 13:51:02

标签: java

我有一个包含8个.tsv文件的存档_2016_08_17.zip。我需要提取名为hit_data.tsv的文件并将其上传到bigquery。这些文件位于Google云平台上。

有人可以给我一个简单的程序来打开存档,找到正确的文件然后将其行打印到屏幕上。我可以从那里拿走它。我的想法是用包含gs://path_name/*hit_data.tsv数据的缓冲区替换路径hit_data.tsv

    public static void main(String[] args) {
    Pipeline p = DataflowUtils.createFromArgs(args);

    p
            .apply(TextIO.Read.from("gs://path_name/*hit_data.tsv"))  
             \\.apply(Sample.<String>any(10))  
            .apply(ParDo.named("ExtractRows").of(new ExtractRows('\t', "InformationDateID")))
            .apply(BigQueryIO.Write
                    .named("BQWrite")
                    .to(BigQuery.getTableReference("ddm_now_apps", true))
                    .withSchema(getSchema())
                    .withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_APPEND)
                    .withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED));

    p.run();
}

2 个答案:

答案 0 :(得分:0)

根据定义,您无法在不解压缩的情况下从zip存档中读取文件。

答案 1 :(得分:0)

我们有ZipFile课程。它具有entries方法,可返回条目的枚举。现在我们可以找到条目或使用getEntry方法,如果我们知道zip文件的名称和路径。

然后,最后一步,我们可以使用getInputStream方法只读取我们想要的条目。