GCP dataproc 上的外部 Hive table 未从 GCP 存储桶中读取数据

External Hive table on GCP dataproc not readng data from GCP bucket

我在 GCP 存储桶中有以下格式的数据:

gs://bucket/my_table/data_date=2021-03-26/000
gs://bucket/my_table/data_date=2021-03-26/001
gs://bucket/my_table/data_date=2021-03-27/000
gs://bucket/my_table/data_date=2021-03-27/001

我正在使用以下数据创建外部 table:

CREATE EXTERNAL TABLE `my_db.my_table`(
  `col1` string, 
  `col2` string, 
PARTITIONED BY ( 
  `data_date` string)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
WITH SERDEPROPERTIES ( 
  'field.delim'='\t', 
  'serialization.format'='\t') 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
  'gs://bucket/my_table/'

创建时没有错误 table:

hive > CREATE EXTENAL TABLE ...
Time Taken: 0.012 seconds
OK

但是,我看不到任何数据。 None 以下命令 return 任何命令,即使存储桶中有数据文件。

hive> show partitions my_db.my_table;
Ok
Time taken: 0.191 seconds

hive> select * from my_db.my_table;
Ok
Time taken: 0.191 seconds

我也没有看到任何错误。我已经验证并且我确实拥有存储桶的读取权限。

您需要修复 table 以检索外部 table 中的所有现有分区。修复命令恢复所有分区并更新 Hive 元存储。

MSCK REPAIR TABLE TABLE_NAME

您可以阅读有关修复命令的更多信息here