镶木地板文件上的外部 table。 .count() 有效,.show() 失败

External table on parquet files. .count() works, .show() fails

我在一组分区的 parquet 文件上定义了一个外部 table:

CREATE EXTERNAL TABLE foobarbaz (
      src_file string,
      [...]
      temperature string
      )
      PARTITIONED BY (dt string)
      STORED AS PARQUET
      LOCATION '{1}'

如果我那么运行

df = spark.table(foobarbaz)
print(df.count())

我得到了正确的非零结果。

如果我运行

df = spark.table(foobarbaz)
df.show()

PySpark 提出

py4j.protocol.Py4JJavaError: An error occurred while calling o95.showString. [...] Caused by: java.lang.UnsupportedOperationException

为什么?

full traceback

我发现了一个特定于我的情况的问题,可能仍然与未来的读者相关。我使用 parquet-tools 提取了模式。一列被列为 int96,所以在架构定义中我天真地为该列使用了 int 类型。进一步调查发现该列的类型为 datetime。相应地更改架构定义解决了该问题。