【Spark】解析JSON格式HDFS大文件实践
一、读取HDFS目录并分区
- 其中validPath为目标文件所在的目录,默认读取目录下全部文件,指定读取到RDD后,分区数为8。
- mapPartitions为以某一个分区为单位,对该单位内的每一行做操作。
- iter为RDD分区后的每个分区数据的基本操作遍历器,类型为Iterator
val jsonRdd = CommonHelper.getSparkContext().textFile(validPath.toString, 8)
val result = jsonRdd.mapPartitions(iter => parseJsonStr(iter))
//取RDD前十条数据进行打印
result.take(10).foreach {
println
}
二、将HDFS每一行JSON字符串按分区处理成RDD[Row]
- 创建Row类型对应的Schema
val schema = StructType(List(
StructField("id", ArrayType(LongType, true), true),
StructField