【发布时间】:2022-01-07 09:43:05
【问题描述】:
我使用df.to_parquet(path="...", partition_cols="period") 将数据帧写入 HDFS (Cloudera CDH) 上的镶木地板文件。这很好用,创建了一个子文件夹结构(period=YYYYMMDD),当我读取单个镶木地板文件时,它们包含预期的数据(正如预期的那样,它们不包含period 列,因为它已被分区)。我现在正在尝试使用 Impala/Hive 创建一个表。
CREATE EXTERNAL TABLE lab.tablename
LIKE PARQUET '/data/.../db/tablename/period=20200101/dhfjksdhdsakjdhjk.parquet'
PARTITIONED BY (period INT)
STORED AS PARQUET
LOCATION '/data/.../db/tablename'
起初,它似乎有效。该表显示在数据库中,列已正确列出,
period 键甚至被列为分区键。不过
select * from lab.tablename
>> Done. 0 results.
不知何故,Impala 似乎没有正确设置引用。我也尝试过:
COMPUTE STATS lab.tablename
>> Updated 0 partition(s) and 2 column(s).
检查时得到0行
SHOW TABLE STATS lab.tablename
如果我以非分区方式写入相同的数据,它工作正常。
【问题讨论】: