1

因此,我正在尝试使用 hiveContext 读取 Spark 中的配置单元表。该作业基本上是将两个表中的数据读取到两个 Dataframe 中,然后将其转换为 RDD。然后,我根据一个共同的密钥加入他们。但是,由于 MetadataFetchFailException(org.apache.spark.shuffle.MetadataFetchFailedException: Missing an output location for shuffle? 的可能原因是什么?),此连接失败。

我想通过将我的数据传播到其他节点来避免这种情况。目前,即使我有 800 个执行程序,大多数数据也被读入 10 个节点,每个节点都使用 > 50% 的内存。

问题是,如何在读取操作期间将数据分散到更多分区?我不想稍后重新分区。

 val tableDF= hiveContext.read.table("tableName")
                         .select("colId1", "colId2")
                         .rdd
                         .flatMap(sqlRow =>{
                            Array((colId1, colId2))
                         })
4

0 回答 0