Scala 如何使用Spark转换大型文本文件以加载到关系模式中?

Scala 如何使用Spark转换大型文本文件以加载到关系模式中?,scala,apache-spark,Scala,Apache Spark,我正在使用一个大型数据集,该数据集以键:值对的形式排列,格式如下。每一新行分隔一条记录,数据集每行包含一个键:值对 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 我的目标是将这个文本文件转换成一个数据帧,它的记录可以很容易地保存在一个表中 在另一种编程范例中,当遇到换行时,我可能会迭代该文件并将记录写入另一

我正在使用一个大型数据集,该数据集以键:值对的形式排列,格式如下。每一新行分隔一条记录,数据集每行包含一个键:值对

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中实现这一点


在创建了一个新的RDD,其中每一行都映射到
行之后,我一直认为Spark中处理
\n
作为记录分隔符的最佳方法是正确的。split(“:”)

Spark会在每一行创建一个新元素。所以我不确定换行符的问题是什么,但是您可以做一些事情,比如将数据映射到case类。case类定义了表的模式。非常直截了当。以下内容实质上是对


您需要提供您迄今为止尝试过的(代码方面的)内容,以便我们能够重复我的假设,即您知道“sc”是什么。
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")