即使存在与之关联的镶木地板文件,Hive 外部表也不显示任何数据
Posted
技术标签:
【中文标题】即使存在与之关联的镶木地板文件,Hive 外部表也不显示任何数据【英文标题】:Hive external table is not showing any data even when the parquet files associated with that are present 【发布时间】:2018-08-01 09:32:13 【问题描述】:我创建了一个外部配置单元表,其分区如下-
CREATE EXTERNAL TABLE IF NOT EXISTS engine_power(
engine_company string,
engine_model_name string,
power_timestamp timestamp,
rotor_efficiency float,
rotor_power float,
rotor_speed float)
PARTITIONED BY (year int, month int, day int) STORED AS PARQUET
location '/powerCalculation' ;
之后我在 pyspark 中执行一些计算,然后将最终数据帧写入 parquet 文件,如下所示-
df.write.partitionBy('year','month','day').parquet("/powerCalculation",mode='append')
它正在上述位置创建镶木地板文件,其中包含年、月和日的新文件夹,但是当我查询表时它没有显示任何数据,select * from engine_power
没有返回任何行。它只是给出没有数据的列。如果我发表声明,搜索各种文章后
MSCK REPAIR TABLE engine_power;
我正在获取更新的行。每次将数据写入分区表时都需要提供这个吗?是否有任何其他方式可以自动进行此更新?
【问题讨论】:
【参考方案1】:没有自动刷新分区的选项,我使用的方法是在成功运行创建每日 parquet 文件的作业后,将额外的 Hive 操作定义为 Oozie 工作流程的一部分。
【讨论】:
所以我想我每次创建新的镶木地板文件时都必须运行那个 MSCK 修复语句 不是单个文件,而是在您创建新的分区文件夹时。通常,parquet 文件以每小时或每天的增量方式创建。以上是关于即使存在与之关联的镶木地板文件,Hive 外部表也不显示任何数据的主要内容,如果未能解决你的问题,请参考以下文章
拥有一个大的镶木地板文件还是拥有许多较小的镶木地板文件更好?