【问题标题】:Extracting json records from sequence files in spark scala从spark scala中的序列文件中提取json记录
【发布时间】:2017-03-03 14:57:02
【问题描述】:

我有一个包含多个 json 记录的序列文件。我想将每个 json 记录发送到一个函数。如何一次提取一条json记录?

【问题讨论】:

    标签: json scala hadoop apache-spark


    【解决方案1】:

    不幸的是,没有标准的方法来做到这一点。

    YAML 有一种明确定义的方式允许一个文件包含多个 YAML“文档”不同,JSON 没有这样的标准。

    解决问题的一种方法是发明自己的“对象分隔符”。例如,您可以使用换行符分隔相邻的 JSON 对象。您可以告诉您的 JSON 编码器不要输出任何换行符(通过强制将其转义为 \n)。只要您的 JSON 解码器确定它不会看到任何换行符,除非它分隔两个 JSON 对象,它就可以一次读取一行并解码每一行。

    suggested 也曾表示可以使用 JSON 数组存储多个 JSON 对象,但将不再是“流”。

    【讨论】:

      【解决方案2】:

      您可以将序列文件的内容读取到 RDD[String] 并将其转换为 Spark Dataframe。

      val seqFileContent = sc
        .sequenceFile[LongWritable, BytesWritable](inputFilename)
        .map(x => new String(x._2.getBytes))
      val dataframeFromJson = sqlContext.read.json(seqFileContent)
      

      【讨论】:

        猜你喜欢
        • 2022-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-25
        • 2021-12-09
        • 2020-05-14
        • 2021-04-25
        • 1970-01-01
        相关资源
        最近更新 更多