【问题标题】:BigQuery - Apache Avro library failed to parse the header with the following error: Invalid data file. Magic does not matchBigQuery - Apache Avro 库无法解析标头并出现以下错误:数据文件无效。魔法不匹配
【发布时间】:2019-11-25 17:53:31
【问题描述】:

我第一次弄乱 avro 文件。

我得到了很多带有编码数据的 csv 文件,并且只是对应该进入 BigQuery 的数据进行了 python 处理。最后,我得到了在 avsc 中收到的带有 csv 数据的模式节拍。到现在为止还挺好。

现在我知道我需要在 BigQuery 中创建将接收此数据的表。我只是尝试创建一个空白表并插入接收到的模式并且不能。我得到以下信息:“读取数据时出错,错误消息:Apache Avro 库无法解析标头并出现以下错误:无效的数据文件。魔术不匹配:gs://xxx/xxx/test.avsc” .我试图通过这个在线页面将 avsc 转换为 json:https://json-schema-validator.herokuapp.com/avro.jsp 但是没有成功。

这是进程路径吗?因为我可以在解码后生成记录,所以我知道架构不正确。所以我怀疑我是否做对了。

【问题讨论】:

    标签: python google-bigquery avro


    【解决方案1】:

    您不能使用 avsc 文件创建表模式。您可以从CSVAVRO(未压缩)加载数据并启用模式自动检测。此外,如果您的文件位于本地数据源上,请查看 this

    由于您使用的是 python 和 CSV 文件,因此您可以尝试以下操作:

    from google.cloud import bigquery
    client = bigquery.Client()
    filename = '/path/to/file.csv'
    dataset_id = 'my_dataset'
    table_id = 'my_table'
    
    dataset_ref = client.dataset(dataset_id)
    table_ref = dataset_ref.table(table_id)
    job_config = bigquery.LoadJobConfig()
    job_config.source_format = bigquery.SourceFormat.CSV
    job_config.skip_leading_rows = 1
    job_config.autodetect = True
    
    with open(filename, "rb") as source_file:
        job = client.load_table_from_file(source_file, table_ref, job_config=job_config)
    
    job.result()  # Waits for table load to complete.
    
    print("Loaded {} rows into {}:{}.".format(job.output_rows, dataset_id, table_id))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-23
      • 2015-09-14
      • 2014-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多