我在 HDFS 上有一个文本文件,我想将其转换为 Spark 中的数据帧。
我正在使用 Spark 上下文加载文件,然后尝试从该文件生成各个列。
val myFile = sc.textFile("file.txt")
val myFile1 = myFile.map(x=>x.split(";"))
完成此操作后,我正在尝试以下操作。
myFile1.toDF()
我遇到了一个问题,因为 myFile1 RDD 中的元素现在是数组类型。
我该如何解决这个问题?
Update- 作为火花1.6,您可以简单地使用内置的csv数据源:
spark: SparkSession = // create the Spark Session
val df = spark.read.csv("file.txt")
您还可以使用各种选项来控制 CSV 解析,例如:
val df = spark.read.option("header", "false").csv("file.txt")
对于 Spark 版本 :
最简单的方法是使用Spark-csv https://github.com/databricks/spark-csv- 将其包含在您的依赖项中并遵循自述文件,它允许设置自定义分隔符(;
),可以读取 CSV 标头(如果有),并且可以推断架构types(需要额外扫描数据)。
或者,如果您知道模式,您可以创建一个代表它的案例类,并将 RDD 元素映射到此类的实例,然后再转换为 DataFrame,例如:
case class Record(id: Int, name: String)
val myFile1 = myFile.map(x=>x.split(";")).map {
case Array(id, name) => Record(id.toInt, name)
}
myFile1.toDF() // DataFrame will have columns "id" and "name"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)