镶木地板文件上的外部 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
为什么?
我发现了一个特定于我的情况的问题,可能仍然与未来的读者相关。我使用 parquet-tools 提取了模式。一列被列为 int96
,所以在架构定义中我天真地为该列使用了 int
类型。进一步调查发现该列的类型为 datetime
。相应地更改架构定义解决了该问题。
我在一组分区的 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
为什么?
我发现了一个特定于我的情况的问题,可能仍然与未来的读者相关。我使用 parquet-tools 提取了模式。一列被列为 int96
,所以在架构定义中我天真地为该列使用了 int
类型。进一步调查发现该列的类型为 datetime
。相应地更改架构定义解决了该问题。