簡體   English   中英

Scala-使用Spark將JSON文件作為單個字符串讀取

[英]Scala - read JSON file as a single String with Spark

我有描述表結構的JSON文件。 我想讀從S3每個文件以然后應用一個單獨的字符串fromJson()的方法apache.spark.sql.types.DataType

DataType.fromJson(jsonString).asInstanceOf[StructType] 

但是現在我只設法將文件讀入DataFrame中:

 val testJsonData = sqlContext.read.option("multiline", "true").json("/s3Bucket/metrics/metric1.json")

但是我不需要df.schema ,而是需要將JSON字符串的內容解析為StructType。

JSON文件的內容:

{
  "type" : "struct",
  "fields" : [ {
    "name" : "metric_name",
    "type" : "string",
    "nullable" : true,
    "metadata" : { }
  }, {
    "name" : "metric_time",
    "type" : "long",
    "nullable" : true,
    "metadata" : { }
  }, {
    "name" : "metric_value",
    "type" : "string",
    "nullable" : true,
    "metadata" : { }
  }]
}

看起來您要使用的是sc.wholeTextFiles (在這種情況下,sc是SparkContext )。

這將導致RDD[(String, String)] ,其中._1是文件名, ._2是整個文件內容。 也許您可以嘗試:

val files = sc.wholeTextFiles("/s3Bucket/metrics/", 16).toDS()
files.map(DataType.fromJson(_._2).asInstanceOf[StructType])

從理論上講,它將為您提供Dataset[StructType] 不幸的是,我沒有在純Spark sql API中找到類似的功能,但這可能有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM