【问题标题】:Converting JSON strings to Parquet format using AWS EMR使用 AWS EMR 将 JSON 字符串转换为 Parquet 格式
【发布时间】:2020-01-10 00:55:36
【问题描述】:

我有从服务中获取的 JSON 字符串。我需要将该数据转换为 Parquet 格式。我有 JSON 字符串的 Spark 架构,但我不知道从哪里开始,因为这是我第一次处理 AWS EMR 和大数据:

  • 我可以将作业从我的服务提交到 EMR spark 集群,还是必须使用脚本创建的 JAR 文件创建一个步骤,以便在将 JSON 文件上传到 S3 后进行转换?

  • 我应该使用 AWS SDK 在我的服务中创建 EMR 集群还是先通过控制台创建 EMR 集群?我尝试使用默认设置从控制台创建 EMR 集群,但集群在我创建它后立即终止,并显示消息“由用户终止”。没有任何 cloudwatch 日志可以了解集群自行终止的原因。我查看了有关此问题的其他 SO 问题,并确保未启用自动终止。

  • 我应该将所有 JSON 聚合到一个文件中并将该文件提交给 spark,还是我可以逐个提交 json 并根据该数据创建一个 parquet 文件?

  • 还有什么需要考虑的吗?

我真的很困惑,我的研究能力似乎让我失望了。我找不到任何相关的东西来帮助我理解如何解决这个问题。任何帮助(包括对参考的 cmets)都非常欢迎和高度赞赏。

【问题讨论】:

    标签: java apache-spark amazon-emr parquet


    【解决方案1】:

    您可以使用 sparkSQL 先将 JSON 文件读入 DataFrame,然后将 DataFrame 写入 parquet 文件。

    val df = spark.read.json("path/to/json/file")   //in json path you can directly give file like below
            or
    val jsonString = $json
    val df = spark.read.json(jsonString)
    

    并将 df 转换为镶木地板,您可以使用以下代码:

    df.write.parquet("path/to/parquet/file")
    
    or
    
    df.save("path/to/parquet/file", "parquet")
    

    因此,用于将 json 字符串转换为镶木地板。您可以将所有代码放在项目中并创建一个 JAR。

    创建 JAR 后,您可以将其放入 EMR 并运行它的 spark-submit 命令。

    要在特定时间安排它,您可以使用 lambda 来触发它。

    【讨论】:

      猜你喜欢
      • 2017-11-08
      • 2019-04-01
      • 2013-02-04
      • 2020-09-09
      • 2021-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多