我们正尝试使用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
非常感谢您的帮助
谢谢, 阿维
答案 0 :(得分:0)
附加了Google的日志和管道的主要部分
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)...
这基本上是主要的