写分区的实木复合地板,但只读只能拾取一个分区

时间:2018-08-22 14:43:39

标签: scala apache-spark

这是我的代码块,用于读取文本文件,进行一些处理,然后将其写入镶木地板

val distData = sc.textFile(inputFileAdl).repartition(8) 
val x = new UdfWrapper(inputTempProp, "local")
val wrapper = sc.broadcast(x)
val rdd = distData.map({s => 
               wrapper.value.exec(s.toString) 
           }).map(i => i.split("\u0001"))
val maxCols = rdd.first().length
rdd.toDF("arr").select((0 until maxCols).map(i => $"arr"(i).as(s"col_$i")): _*).write.parquet(outFolder)

然后我读起来就像

var df = spark.read.parquet(outFolder)

当我阅读它时,它只会每8个记录中出现一次(因为我重新分配为8)。因此记录0/8/16 / etc。

我重新分区以允许将处理分布在8个单独的节点上(没有其他原因,这是我发现可行的唯一方法)。是否有任何可以正确读取此记录的信息,所以我可以获得所有记录,而不仅是每8个记录?或写一种方法的方法是将其分为8个单独的分区,最好不要拆分,但我仍然需要在节点之间分布处理。

0 个答案:

没有答案