Google bigquery 查看2012年9月27日加载操作中的重复数据

Google bigquery 查看2012年9月27日加载操作中的重复数据,google-bigquery,Google Bigquery,我们刚刚注意到,2012年9月27日左右,我们的数据在上传csv文件(使用JavaAPI)时被复制。日志显示上传过程中没有错误,但我们已确认当天的大多数行已被复制(每行有不同的时间戳,以微秒为单位)。当天是否存在任何已知故障?我们不知道如何防止这种情况再次发生 谢谢你的反馈 首先:确保(通过检查加载作业历史记录)实际上没有两次运行加载作业。如果您正在使用: 我们不知道在导入期间数据会被复制的任何原因。如果您向我们提供更多信息,例如您的工作id和项目id,这将有助于诊断问题 一般来说,正如Mich

我们刚刚注意到,2012年9月27日左右,我们的数据在上传csv文件(使用JavaAPI)时被复制。日志显示上传过程中没有错误,但我们已确认当天的大多数行已被复制(每行有不同的时间戳,以微秒为单位)。当天是否存在任何已知故障?我们不知道如何防止这种情况再次发生

谢谢你的反馈

首先:确保(通过检查加载作业历史记录)实际上没有两次运行加载作业。如果您正在使用:


我们不知道在导入期间数据会被复制的任何原因。如果您向我们提供更多信息,例如您的工作id和项目id,这将有助于诊断问题

一般来说,正如Michael在回答中提到的,看到重复数据的人通常会运行相同的作业两次。(请注意,如果作业失败,则不应以任何方式修改该表)


防止此类冲突的一种方法是命名作业,因为我们在每个项目级别强制执行作业名称唯一性。例如,如果您每天加载一次,您可能希望将您的作业id命名为“job\u 2012\u 10\u 08\u load1”。这样,如果您尝试运行同一个作业两次,则第二个作业将在启动时失败。

感谢您为我们研究此问题。很难(几乎不可能)相信数据在bigquery端被复制。也就是说,我们所能看到的一切似乎都表明情况并非如此。如前所述,我们在每一行上都有一个微秒的时间戳值。对于引用的两个作业ID,我随机选取了一行,并确保在我们导入的所有数据中,它是唯一的值。当我运行相同的查询时,我在bigquery表中得到两行(相同的)

嗨,Hung Huynh,我下面的建议有用吗?我正在收集日志,检查作业的状态,并将发回。我们的.csv.gz文件使用唯一的时间戳命名,作业ID是根据这些文件名创建的,因此,如果文件上载两次,它将由于作业ID冲突而失败。2014年,我偶尔在最近的上载中也会看到类似的情况。我们确实有一个与您建议的类似的方案。我们的方案是使用文件名作为jobId的一部分,文件名本身每5分钟生成一个唯一的时间戳。我们确认生成重复行的两个作业ID是:apps_prod_orgsite_terracotta_lan_bigquery-data-2012-09-27_23-22-51-729_csv_gz和apps_prod_orgsite_terracotta_lan_bigquery-data-2012-09-27_01-47-43-901_csv_gzFYI该错误已被发现并修复。这一问题是为了整合整个表,而不是为了说明问题的重要性。我们两次尝试合并同一个表,都成功了,导致许多行重复。您的表仍有多余的行。如果您愿意,我可以从复制合并操作中删除行(如果这会导致问题,可以反转)。谢谢。我很确定我们想继续并删除重复的数据。但首先我有几个问题…bug修复是什么时候(或者甚至已经?)应用于生产的?为了删除被复制的行,您需要知道哪些细节?在这方面,准确地确定我们可以检测重复数据的所有作业ID将是一项相当艰巨的任务。我已经获得了删除重复行所需的所有信息。。。它们都有相同的存储id。我可以将该id标记为垃圾(如果导致问题,操作可以撤消7天)。
# Show all jobs for your selected project
bq ls -j

# Will result in a list such as:
...
job_d8fc9d7eefb2e9243b1ffde484b3ab8a   load      FAILURE   29 Sep 00:35:26   0:00:00   
job_4704a91875d9e0c64f7aaa8de0458696   load      SUCCESS   29 Sep 00:28:45   0:00:05   
...

# Find the load jobs pertaining to the time of data loading. To show detailed information
# about which files you ingested in the load job, run a command on the individual jobs
# that might have been repeats:
bq --format prettyjson show -j job_d8fc9d7eefb2e9243b1ffde484b3ab8a