【发布时间】:2016-12-02 09:19:39
【问题描述】:
我有一个包含 200 万条记录的数据集。我想把它分成 2 个相等的一半。我没有任何带有序列号的列,因此我可以对其应用 where 条件并将其拆分为 2。这也可能不是正确的方法,但我想要做的就是将数据帧拆分为 2 半
我正在使用的示例代码:
var invoiceData = sc.textFile("/Scala/InvoiceLine.csv");
def removeheader (x : RDD[String]): RDD[String] = {
x.mapPartitionsWithIndex((idx, lines) => {
if (idx == 0) {
lines.drop(1)
}
lines
})
}
var invoiceWithoutHeader = removeheader(invoiceData);
var invoiceSchemaString = invoiceData.first().toUpperCase().split(",").map(_.trim());
var invoiceSchema = StructType(invoiceSchemaString.map(fieldName => StructField(fieldName, StringType, true)))
var invoiceRowRDD = invoiceWithoutHeader.map(y => {
var parser = new CSVParser(',');
parser.parseLine(y)
}).map { x => Row.fromSeq(x) }
var invoiceDF = sqlContext.applySchema(invoiceRowRDD, invoiceSchema);
现在我想将 invoiceDF 分成 2 部分,每部分 100 万 由于我是初学者,代码可能效率不高。
提前致谢:)
【问题讨论】:
标签: scala apache-spark