【发布时间】:2016-09-29 07:27:54
【问题描述】:
我正在尝试使用 Spark RDD 进行一些文本处理。
输入文件的格式为:
2015-05-20T18:30 <some_url>/?<key1>=<value1>&<key2>=<value2>&...&<keyn>=<valuen>
我想从文本中提取一些字段并将它们转换为 CSV 格式,例如:
<value1>,<value5>,<valuek>,<valuen>
以下代码是我如何做到这一点的:
val lines = sc.textFile(s"s3n://${MY_BUCKET}/${MY_FOLDER}/test/*.gz")
val records = lines.map { line =>
val mp = line.split("&")
.map(_.split("="))
.filter(_.length >= 2)
.map(t => (t(0), t(1))).toMap
(mp.get("key1"), mp.get("key5"), mp.get("keyk"), mp.get("keyn"))
}
我想知道,如果输入文本的某些行格式错误或无效,那么map() 函数无法返回有效值。这在文本处理中应该很常见,处理这个问题的最佳实践是什么?
【问题讨论】:
标签: apache-spark