繁体   English   中英

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

[英]How can I use Spark to transform a large text file for loading into a relational schema?

我正在使用以以下形式的key:value对布置的大型数据集。 每条新行都划定一条记录,并且数据集每行包含一个key: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中完成此任务。

在创建每行映射到line.split(": ")的新RDD之后,我被Spark最好的方法用于处理\\n作为记录定界符。

Spark每行创建一个新元素。 所以我不确定换行符是什么问题,但是您可以执行一些操作,例如将数据映射到案例类。 案例类定义表的架构。 非常简单。 以下本质上是对文档的重写。

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")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM