Hadoop 配置单元插入覆盖目录将记录拆分为相同的文件大小

Hadoop 配置单元插入覆盖目录将记录拆分为相同的文件大小,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我使用配置单元外部表将数据转储为json。我的转储文件看起来不错。然而,在我转储之后,hive编写的文件大小不一,从400MB到7GB不等。我想有一个固定的最大大小(比如1GB)的文件。但我不能这样做。请帮忙! 我的问题是: INSERT OVERWRITE DIRECTORY '/myhdfs/location' ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' select * fro

我使用配置单元外部表将数据转储为json。我的转储文件看起来不错。然而,在我转储之后,hive编写的文件大小不一,从400MB到7GB不等。我想有一个固定的最大大小(比如1GB)的文件。但我不能这样做。请帮忙! 我的问题是:

 INSERT OVERWRITE DIRECTORY '/myhdfs/location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' 
    select * from MY_EXTERNAL_TABLE; 
配置单元版本:
Hive 1.1.0-cdh5.14.2


Hadoop版本:
Hadoop 2.6.0-cdh5.14.2

设置每个减速机的字节数限制并添加分发者(这将触发减速机步骤),使用一些均匀分布的列或列列表:

set hive.exec.reducers.bytes.per.reducer=1000000000; 

INSERT OVERWRITE DIRECTORY '/myhdfs/location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' 
    select * from MY_EXTERNAL_TABLE distribute by <column or col list here>; 
设置hive.exec.reducers.bytes.per.reducer=100000000;
插入覆盖目录“/myhdfs/location”
行格式SERDE'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe'
从MY_EXTERNAL_表中选择*分发方式;

还请检查此答案:

设置每个减速机的字节数限制并添加distribute by(这将触发减速机步骤),使用一些均匀分布的列或列列表:

set hive.exec.reducers.bytes.per.reducer=1000000000; 

INSERT OVERWRITE DIRECTORY '/myhdfs/location' 
    ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe' 
    select * from MY_EXTERNAL_TABLE distribute by <column or col list here>; 
设置hive.exec.reducers.bytes.per.reducer=100000000;
插入覆盖目录“/myhdfs/location”
行格式SERDE'org.apache.hadoop.hive.serde2.DelimitedJSONSerDe'
从MY_EXTERNAL_表中选择*分发方式;

同时检查此答案:

虽然这似乎是一个合法的答案,但不知何故它不起作用,我的还原程序在67%后卡住,但是如果没有“分发者”,我的作业运行良好,仅通过使用映射器完成,并且为零reducers@KoustavRay这可能是由于分布方式的倾斜。检查“按组计数”如果是“倾斜”,则尝试查找均匀分布的键I按主键(UUID)分布,因此每条记录只有一个条目。@KoustavRay请尝试基数较低但均匀分布的列,不要像在PK@KoustavRay分区候选者(如果您还没有分区)是一个很好的列,可以包含在distribute by中虽然这似乎是一个合法的答案,但不知怎么的,它不起作用,我的还原程序在67%后被卡住,但是没有distribute by,我的作业运行良好,仅通过使用映射器完成,并且为零reducers@KoustavRay这可能是因为“分发方式”中存在偏差。如果存在偏差,请检查“计数分组方式”is skew然后尝试查找均匀分布的键I通过主键(UUID)分布它,因此每个记录只有一个条目。@KoustavRay尝试一些基数较低但均匀分布的列,而不是像在PK@KoustavRay分区候选(如果您还没有分区)是要包含在分发者中的一个好列