我目前正在将 BigQuery 表提取到 Google Cloud Storage 中的分片 .csv 中——是否有任何方法可以对提取的行进行洗牌/随机化? GCS .csv 将用作 GCMLE 模型的训练数据,当前导出的顺序不是随机的,因为它们由类似的“标签”聚集在一起。
这会导致训练 GCMLE 模型时出现问题,因为您必须将每个批处理中所有标签的随机样本交给模型。虽然 GCMLE/TF 能够随机化单个 .csv 中行的顺序,但(据我所知)没有任何方法可以随机化多个 .csv 中选择的行。因此,我正在寻找一种方法来确保输出到 .csv 的行确实是随机的。
最佳答案
Can BigQuery table extracted rows be randomized?
没有。 Extract Job API (因此任何建立在它之上的客户端)没有任何东西可以让你这样做。
I am looking for a way to ensure that the rows being output to the .csv are indeed random.
您应该首先创建对应于您的 csv 文件的表格,然后将它们一个接一个地提取到单独的 csv 中。在这种情况下,您可以控制 csv 中的内容
如果您担心处理成本(您需要扫描表的次数与扫描 csv 文件的次数一样多)- 您可以在 Migrating from non-partitioned to Partitioned tables 中查看分区方法。 .这仍然涉及成本但大大减少了
最后,零成本选项是使用 Tabledata.list带有分页的 API,同时在整个 csv 文件中分发响应 - 您可以在 client 中轻松完成此操作任你选择
关于google-bigquery - BigQuery 表提取的行可以随机化吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46780489/