执行 insert overwrite 语句,产生了200个小文件。 试过配置参数:spark.sql.shuffle.partitions=1, 但这个导致所有reduce阶段均只有一个并行度,影响了执行效率。
大家,有没有什么办法能解决这个问题呢?
大家,有没有什么办法能解决这个问题呢?
解决方案 »
- 【每日译帖】不能从外部8000端口访问OpenStack的Horizon仪表盘
- hadoop和OpenStack有什么区别,请帮我扫扫盲?
- 有关openstack问题的咨询
- 送分啦,送分啦,Intple引跑公司怎么样?有熟悉这家公司的不?
- 云计算
- 监控服务器,供应商给提供的方案,大家给评价下。
- 搜集一些的PAAS 服务
- spark RDD操作问题请教
- windows上报Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState'
- Spark Java 取value最大值问题,求大神相助
- docker history如何查看完整的信息
- 请教kafka集群如何被外网访问?
spark.sql.shuffle.partitions
specialDaysInMall.toDF("name", "age", "address").coalesce(3)
.registerTempTable("inMall")
hqx.sql("insert overwrite table t1 select name,age,address from inMall")
这样之后,在使用sql进行insert或者overwrite形式进行写入hive表,这样结果应该就只会生成3个parquet文件,不妨一试
因为一个是会增加一次shuffle,二个如果数据集已经排序,shuffle会把顺序打乱。
所以如果真有调整的必要,建议是在写入前一个步骤插入reparation(n)。
例如
rdd.map(xxx).filter(xxx).sortBy(xxx).write(xxx) 在sortBy前进行reparation