BigQuery - 使用 Java 客户端库上传 GZIP 压缩文件
Posted
技术标签:
【中文标题】BigQuery - 使用 Java 客户端库上传 GZIP 压缩文件【英文标题】:BigQuery - Uploading GZIP compressed files using Java Client library 【发布时间】:2015-09-14 22:56:48 【问题描述】:我正在尝试使用 Google 的 BigQuery Java 客户端 API 上传 gzip 压缩文件。我可以毫无问题地上传普通文件。但是 gzip 失败并出现错误“无效的内容类型 'application/x-gzip'。上传必须具有内容类型 'application/octet-stream'”。
下面是我的代码。
val pid = "****"
val dsid = "****"
val tid = "****"
val br = Source.fromFile(new File("****")).bufferedReader()
val mapper = new ObjectMapper()
val schemaFields = mapper.readValue(br, classOf[util.ArrayList[TableFieldSchema]])
val tschema = new TableSchema().setFields(schemaFields)
val tr = new TableReference().setProjectId(pid).setDatasetId(dsid).setTableId(tid)
val jc = new JobConfigurationLoad().setDestinationTable(tr)
.setSchema(tschema)
.setSourceFormat("NEWLINE_DELIMITED_JSON")
.setCreateDisposition("CREATE_IF_NEEDED")
.setWriteDisposition("WRITE_APPEND")
.setIgnoreUnknownValues(true)
val fmr = new SimpleDateFormat("dd-MM-yyyy_HH-mm-ss-SSS")
val now = fmr.format(new Date())
val loadJob = new Job().setJobReference(new JobReference().setJobId(Joiner.on("-")
.join("INSERT", pid, dsid, tid, now))
.setProjectId(pid))
.setConfiguration(new JobConfiguration().setLoad(jc))
// val data = new FileContent(MediaType.OCTET_STREAM.toString, new File("/Users/jegan/sessions/34560-6")) // This works.
val data = new FileContent(MediaType.GZIP.toString, new File("/Users/jegan/sessions/34560-6"))
val bq = BQHelper.createAuthorizedClientWithDefaultCredentials()
val job = bq.jobs().insert(pid, loadJob, data).execute()
从这个链接中,我看到我们需要使用可恢复上传来实现这一点。
https://cloud.google.com/bigquery/loading-data-post-request#resumable
但问题是,我使用的是 Google 的 Java 客户端库。如何使用此库进行可恢复上传?关于这方面的信息似乎不多,或者我遗漏了一些东西。有没有人这样做过?请指点我一些文档/示例。谢谢。
【问题讨论】:
【参考方案1】:如果 application/octet-stream 有效,就使用它。我们不会将媒体类型用于任何重要的事情。
也就是说,我想我改变了它,以便我们可以接受任何媒体类型。您使用的是最新版本的 Java 客户端库吗?
【讨论】:
感谢您的回复杰里米。八位字节流实际上有效。我之前是手动解压缩文件的。阅读您的回复后,我尝试不转换,它确实有效。我记得在某处读到该 API 不支持 gzip 格式并对此感到厌烦。对于那个很抱歉。感谢您的帮助。以上是关于BigQuery - 使用 Java 客户端库上传 GZIP 压缩文件的主要内容,如果未能解决你的问题,请参考以下文章
使用 POST 请求和 Java 客户端库加载到 BigQuery 的任何示例?
Bigquery 加载列中包含“null”文本的 CSV 文件
如何使用 PHP bigquery 客户端库对 bigquery 数据进行分页?
如何在 BigQuery java 客户端加载作业中将“ignoreUnknownValues”选项设置为“true”