我有一个Parquet文件的位置有数据。使用hue,我创建了一个hive表,如下所示
create external table parq_test (
A int,
B int,
C int
)
STORED AS PARQUET
LOCATION '/data/parq_test';
当我说
select * from parq_test;
它返回0行。
我试过了
MSCK REPAIR TABLE parq_test;
还是不走运
下面我试过了,但在我的控制台里不支持
ALTER TABLE parq_test RECOVER PARTITIONS;
事实上,我测试在我的笔记本,有数据在我的Parquet文件可用。那么这里有什么问题,为什么我的表没有显示任何数据?
1条答案
按热度按时间tag5nh1u1#
parquet文件和配置单元表中的列名应该匹配,然后只有您可以使用配置单元查询查看特定列的数据。否则,您将看到这些列的行具有空值。
让我向您展示一下它是如何按照分步说明编写的:
1) 创建包含列(id,name)的配置单元表
2) 编写parquet文件:我创建一个具有相同列名(id,name)的sparkDataframe并编写parque文件。
3) 验证数据
4) 现在使用spark dataframe编写具有不同列名(id2,name2)的parquet文件
5) 让我们查询表以查看数据,查看列的空值。
6) 现在,我将只使用一个正确的列名(id)编写parquet文件,另一个是不存在的(name2)。
7) 让我们查询表以查看数据,查看不正确列的空值。
8) 现在我们如何读取“隐藏”数据?只需创建一个包含所有列的表。
现在,我如何知道Parquet文件中的所有列是什么???我可以使用spark读取Parquet文件:
我希望这有帮助。。