Hive外部表不显示任何数据,即使存在与之相关的镶木地板文件

时间:2018-08-01 09:32:14

标签: hive pyspark hiveql

我创建了一个带有以下分区的外部配置单元表-

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中执行一些计算,然后将最终数据帧写入如下所示的镶木地板文件中-

df.write.partitionBy('year','month','day').parquet("/powerCalculation",mode='append')

它将在上述位置用新文件夹创建年,月和日的镶木地板文件,但是当我查询该表时,它不显示任何数据,select * from engine_power不返回任何行。它只是给其中没有数据的列。搜索各种文章后,如果我发表声明

MSCK REPAIR TABLE engine_power;

我正在获取更新的行。每次将数据写入分区表时都需要这样做吗?还有其他方法可以自动进行此更新吗?

1 个答案:

答案 0 :(得分:0)

没有自动选项来刷新分区,我使用的方法是在成功创建每日Parquet文件的作业成功运行后,将其他Hive动作定义为Oozie工作流程的一部分。