具有HDFS的Tensorflow数据集API

Luk*_*eyb 1 hdfs tensorflow tensorflow-datasets

我们已经在HDFS目录中存储了* .tfrecord文件的列表。我想使用新的Dataset API,但给出的唯一示例是使用旧的filequeue和string_input_producer(https://www.tensorflow.org/deploy/hadoop)。这些方法使得很难产生时期。

是否可以将HDFS与Dataset API结合使用?

mrr*_*rry 6

HDFS文件系统层可与旧的基于队列的API和新的tf.dataAPI一起使用。假设您已根据TensorFlow / Hadoop部署指南配置了系统,则可以使用以下代码基于HDFS中的文件创建数据集:

dataset = tf.data.TFRecordDataset(["hdfs://namenode:8020/path/to/file1.tfrecords",
                                   "hdfs://namenode:8020/path/to/file2.tfrecords"])
dataset = dataset.map(lambda record: tf.parse_single_example(record, ...)
# ...
Run Code Online (Sandbox Code Playgroud)

请注意,由于HDFS是分布式文件系统,因此您可以从输入管道性能指南“并行数据提取”部分中的一些建议中受益。

  • 不同的目录是一种方法,但您也可以使用 `Dataset.list_files(..., shuffle=False).shard(num_workers, worker_id)` 来确保每个工作人员读取文件集的不同部分。 (3认同)