这是我的代码块,用于读取文本文件,进行一些处理,然后将其写入镶木地板
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个单独的分区,最好不要拆分,但我仍然需要在节点之间分布处理。