google-cloud-platform - GCP dataproc 上的外部 Hive 表未从 GCP 存储桶中读取数据

标签 google-cloud-platform hive google-cloud-dataproc

我在 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

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

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/'

创建表时没有错误:

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

但是,我看不到任何数据。即使存储桶中有数据文件,以下命令也不会返回任何内容。

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

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

最佳答案

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

MSCK 修复表 TABLE_NAME

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

关于google-cloud-platform - GCP dataproc 上的外部 Hive 表未从 GCP 存储桶中读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66966055/

相关文章:

tensorflow - 在 GCP Dataproc 上的 Keras 模型上使用分布式 Tensorflow

node.js - 如何编写云函数以使用 SendGrid 发送电子邮件

hadoop - 将 NULL 值从 Hive 导出到 Teradata

hadoop - hive 是否为每条记录实例化一个新的 UDF 对象?

apache-spark - 没有作业正在运行时,Dataproc集群是否可以自动缩减为0个工作程序?

java - 使用独立的本地 spark java 程序读取 GCS 文件

python - 使用云功能从谷歌云存储桶中读取最新文件

google-cloud-platform - 您如何覆盖 Google AI 平台的标准库(即升级 scikit-learn)并为自定义预测例程安装其他库?

mongodb - 使用 VPC 和对等网络时,如何从 Google Cloud Run 连接到 MongoDB Atlas?

sql - 配置单元:按日期(未知日期数)创建包含汇总数据的行