错误:无法访问bigquery中类型为array< struct< element string>>的值的字段元素

bxgwgixi  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(424)

我将一个df从pyspark导出到bigquery。df有带数组元素的列,如何将数组转换为串联字符串?每当我试图查询导出的bigquery表的array列时,就会出现以下错误。

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

下面是pyspark中导出到bigquery的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|

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

如果将其视为一个表,则显示如下:

ao218c7q

ao218c7q1#

当使用parquet作为中间格式写入bigquery时,这是一个已知的问题。你能换成兽人吗?方法是:

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

相关问题