Spark Scala将自定义文件格式读取到具有架构的数据框

时间:2018-06-28 20:08:22

标签: scala apache-spark dataframe

我有一个输入文件,看起来很像csv,但带有自定义标头:

FIELDS-START
field1
field2
field3
FIELDS-END-DATA-START
val1,2,3
val2,4,5
DATA-END

任务: 要将数据读取到类型化的数据框中,将动态获取模式,例如此特定文件的示例:

val schema = StructType(
  StructField("field1", StringType, true) ::
    StructField("field2", IntegerType, true) ::
    StructField("field3", IntegerType, true) :: Nil
)    

因此,由于自定义标头的原因,我不能使用spark csv阅读器。我尝试过的另一件事:

val file = spark.sparkContext.textFile(...)
val data: RDD[List[String]] = file.filter(_.contains(",")).map(_.split(',').toList)

val df: DataFrame = spark.sqlContext.createDataFrame(data.map(Row.fromSeq(_)), schema)

由于运行时异常而失败

  

java.lang.String不是int模式的有效外部类型,这是因为 createDataFrame 不执行任何强制转换。

注意:模式是在运行时获取的

谢谢!

0 个答案:

没有答案