我正在处理一个大型数据集,该数据集按键构成:以下形式的值对。每个新行都分隔一条记录,数据集包含一个键:每行的值对。
cat_1/key_1: a value
cat_1/key_2: a value
cat_2/key_3: a value
cat_1/key_1: another value
cat_2/key_3: another value
我的目标是将此文本文件转换为数据框,其记录可以很容易地保存在表格中。
在另一个编程范例中,我可能会迭代文件并在遇到换行符时将记录写入另一个数据结构。但是,我正在寻找一种更为惯用的方法来实现Spark。
在Spark创建一个新的RDD并将每行映射到\n
之后处理作为记录分隔符的最佳方法时,我陷入困境。
答案 0 :(得分:-1)
Spark每行创建一个新元素。所以我不确定换行的问题是什么,但你可以做一些事情,比如将数据映射到案例类。 case类定义表的模式。挺直的。以下基本上是documentation的重写。
case class Data(key: String, value: String)
// Read in data from file
val data = sc.textFile(file://C:/location/of/my/data.txt)
// Maps comma delimited pairs to caseclass and creates the RDD
val myData = data.map(_.split("\\,",-1)).map(p => Data(p(0), p(1)))
// To dataframe
val myDataAsDataFrame = myData.toDF()
// Register the table
myDataAsDataFrame.registerTempTable("tableName")