【问题标题】:Error: Cannot access field element on a value with type ARRAY<STRUCT<element STRING>> in BigQuery错误:无法访问 BigQuery 中类型为 ARRAY<STRUCT<element STRING>> 的值的字段元素
【发布时间】:2020-09-21 21:41:02
【问题描述】:

我将 df 从 pyspark 导出到 BigQuery。 df 有包含数组元素的列,如何将数组转换为连接字符串?每当我尝试查询导出的 BigQuery 表的数组列时,都会出现以下错误。

Error: Cannot access field element on a value with type ARRAY<STRUCT<element STRING>> 

下面是导出到 BigQuery 的 pyspark 中的 df:

+-----------+----------+-------------------+------------------+
| antecedent|consequent|         confidence|              lift|
+-----------+----------+-------------------+------------------+
|[19, 6, 39]|      [44]|  0.418945963975984|10.602038775664845|
|[19, 6, 39]|      [35]|0.47298198799199465| 7.423073393311932|
|[19, 6, 39]|     [322]|   0.47631754503002|4.6520592549063995|
|[19, 6, 39]|     [308]| 0.4496330887258172| 5.856259667533207|
|[19, 6, 39]|     [345]| 0.5196797865243495|5.4970336458402285|

下面是 BigQuery 中表的架构,它是在将 df 从 pyspark 导出到 bigquery 后生成的:

当被视为一个表格时,它是这样的:

【问题讨论】:

  • 提供您查询的SQL语句,我们可以为您修复

标签: sql google-cloud-platform pyspark google-bigquery google-cloud-dataproc


【解决方案1】:

当使用 parquet 作为中间格式写入 BigQuery 时,这是一个 known issue。请问可以转ORC吗?方法是:

df.write.format("bigquery").option("table","...").option("temporaryGcsBucket","...").option("intermediateFormat","orc").save()

【讨论】:

  • 另外,由于某种原因,将 df 写入 bigquery 需要很长时间,有时甚至在操作完成之前终止。有没有办法优化它?
猜你喜欢
  • 1970-01-01
  • 2020-09-22
  • 1970-01-01
  • 2020-12-09
  • 2016-12-30
  • 2020-10-27
  • 2018-07-19
  • 2021-03-11
  • 2023-02-06
相关资源
最近更新 更多