【发布时间】:2015-12-04 06:45:46
【问题描述】:
我正在尝试在 hive 中创建一个镶木地板表。 我可以创建它,但是当我运行分析表 mytable 计算统计信息时; 我得到了这个结果:
numfiles=800, numrows=10000000, totalSize=18909876 rawDataSize=40000000
为什么表由 800 个文件组成,只有 180 Mb? 还有一个为什么要设置文件数? 我尝试使用 SET parquet.block.size=134217728 但结果是一样的
【问题讨论】:
-
问题:创建表的作业中有多少个 Mapper / Reducer?如果你有 800 个 Mapper 而没有 Reducer 并且属性
hive.merge.***files不是 True 那么你将有 800 个物理文件。故事结束。 -
问题:您检查表中不同
INPUT__FILE__NAME的数量了吗?以及表使用的文件夹中 HDFS 文件的数量(可能因为空数据文件而更高)? -
你是如何加载表格的?
-
@ruby @ Samson Scharfrichter 我正在使用带有 spark 的 JavaHiveContext,我在其中放置了 hiveql 查询。我使用“创建表 myTable(.....) 存储为 parquetfile”创建表,然后创建了几个放入 RDD 的对象。我将这个 RDD 保存为 tmp 表,然后我调用 INSERT INTO。
-
@SamsonScharfrichter 我有 800 个不同的 INPUT__FILE__NAME。如何查看表使用的文件夹中 HDFS 文件的数量?