Spark Scala:如何读取固定记录长度文件

时间:2018-06-04 22:41:31

标签: apache-spark-sql

我有一个简单的问题。

“如何读取具有固定记录长度的文件?”我在记录名称和记录中有2个字段。状态。

档案数据 -

John OHIO
VictorNEWYORK
罗恩加利福尼亚

文件布局 -

名称字符串(6);

State String(10);

我只想阅读它并从该文件创建一个DataFrame。只是为了详细说明“固定记录长度” - 如果你看到“OHIO”是4个字符长度,在文件中它填充了6个尾随空格“OHIO”

此处的记录长度为16。

谢谢, SID

1 个答案:

答案 0 :(得分:0)

阅读输入文件:

val rdd = sc.textFile('your_file_path')

然后使用子字符串拆分字段,然后使用toDF()将RDD转换为Dataframe。

val df = rdd.map(l => (l.substring(0, 6).trim(), l.substring(6, 16).trim()))
  .toDF("Name","State")

df.show(false)

结果:

+------+----------+
|Name  |State     |
+------+----------+
|John  |OHIO      |
|Victor|NEWYORK   |
|Ron   |CALIFORNIA|
+------+----------+