使用Google DataFlow从GCS文件中读取序列

时间:2017-03-01 01:05:28

标签: hadoop hadoop2 google-cloud-dataflow sequencefile

我们正尝试使用Google DataFLow SDK将数据(保存为序列文件)加载到BQ中。

在入口点,我们尝试使用以下代码将数据读入管道

    Read.Bounded<KV<LongWritable, BytesWritable>> resuls = HadoopFileSource.readFrom("gs://raw-data/topic-name/dt=2017-02-28/1_0_00000000002956516884.gz",
            org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat.class, LongWritable.class, BytesWritable.class);

[1] 我们正在使用“gcs-connector”启用hadoop概念

[2] HadoopFileSource来自com.google.cloud.dataflow.contrib.hadoop

我们的core-sites.xml文件如下所示:

<configuration>
<property>
    <name>fs.gs.impl</name>
    <value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem</value>
    <description>The FileSystem for gs: (GCS) uris.</description>
</property>
<property>
    <name>fs.AbstractFileSystem.gs.impl</name>
    <value>com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS</value>
    <description>
        The AbstractFileSystem for gs: (GCS) uris. Only necessary for use with Hadoop 2.
    </description>
</property>

但我们一直在 “java.net.UnknownHostException:metadata”

我的事件将GOOGLE_APPLICATION_CREDENTIALS =“/ path / to / key.json”添加到环境变量中,但我们仍然得到相同的异常

只需要简单的方法将序列文件读入Google DataFlow管道 来自GCS

非常感谢您的帮助

谢谢, 阿维

1 个答案:

答案 0 :(得分:0)

附加了Google的日志和管道的主要部分

google log with the exception

   TableSchema schema = getFieldSchema();
    Options options = PipelineOptionsFactory.fromArgs(args).withValidation().as(Options.class);
    Pipeline p = Pipeline.create(options);
    Read.Bounded<KV<LongWritable, BytesWritable>> resuls = HadoopFileSource.readFrom("gs://af_data/topic/dt=2017-03-01/1_0_00000000002949245586.gz",
            org.apache.hadoop.mapreduce.lib.input.SequenceFileInputFormat.class, LongWritable.class, BytesWritable.class);

    p.apply(results)...

这基本上是主要的