Select * 的行计数结果不匹配 * 和 Select count(1) 对于 Hive External table 对于大文件

Row count results MISMATCH for Select * and Select count(1) for Hive External table for Big Files

我是 运行 配置单元外部 table 查询。 问题:Select * from table1”配置单元显示的行数与“Select count(*) from table1”不同。它应该匹配但不匹配不知道为什么?结果匹配 20 MB 左右的小数据,但不匹配大数据 table 即 600 MB 它们不匹配..有人遇到过这个问题吗??

下面是我 运行 显示结果的一些查询。我的源文件是 RDS 文件,我将其转换为 csv 文件并将其上传到 HDFS 并创建外部 table。

其他详细信息

注: 我只遇到大文件的这个问题,例如大小 200 MB 或更大,但对于小文件,例如 80 MB,则没有任何用处。

SELECT count(*) FROM dbname1.cy_tablet where Ranid Is NULL # Zero results

我们解决了这个问题,现在所有计数都匹配了。 我们通过使用 col_names = FALSE

在用作 Hive 外部表源的 csv 文件中删除了 headers
write_delim(df_data,delim = "|",col_names = FALSE, output_file)#

从 CREATE EXTERNAL TABLE 命令中删除了以下行

TBLPROPERTIES('skip.header.line.count'='1'

以上步骤解决了我们的问题。

问题出现在大文件中。在我们的站点中,HDFS 块大小为 128MB,如果我们将文件大小除以 128MB 得到一个数字,我得到的是相同的差异。所以我认为问题出在 headers.

注意:我们使用管道“|”作为分隔符,因为我们在使用 ','

时遇到了一些其他问题