在Spark中读取/分析大小约为1TB的Json文件

在Spark中读取/分析大小约为1TB的Json文件,json,scala,apache-spark,bigdata,data-analysis,Json,Scala,Apache Spark,Bigdata,Data Analysis,我想在一个拥有14个节点和39个核心的集群(Azure HDInsight/Spark)中分析一个大数据(解压后为0.9 TB)。但是速度很慢。以下是我的工作: 数据从下载 val data=spark.read.json(path)——它崩溃了。数据存储在HDFS中 val rdd=sc.textFile(路径)。。。然后rdd.count()。。。。也崩溃 rdd.take(10)。。。这些没问题 无法解压缩该文件;我用data.json.gz阅读它 有什么建议吗?如何使用json阅读器阅读

我想在一个拥有14个节点和39个核心的集群(Azure HDInsight/Spark)中分析一个大数据(解压后为0.9 TB)。但是速度很慢。以下是我的工作:

  • 数据从下载

  • val data=spark.read.json(path)
    ——它崩溃了。数据存储在HDFS中

  • val rdd=sc.textFile(路径)
    。。。然后
    rdd.count()
    。。。。也崩溃

  • rdd.take(10)
    。。。这些没问题

  • 无法解压缩该文件;我用data.json.gz阅读它

  • 有什么建议吗?如何使用json阅读器阅读


    谢谢

    您可以通过提供手动模式来尝试将其全部作为字符串加载,这将简化处理

    schema = t.StructType([
        t.StructField("Name", t.StringType(), True),  
        t.StructField("Age", t.StringType(), True),  
        ...
    ])
    
    df = spark.read \
        .json('path-to-csv', schema=schema)
    

    您提到解压后的大小,但也会说“无法解压文件”。如果您正在从HDFS读取压缩文件,整个文件将被拉入内存,因为它无法拆分。这可能是通向OOMEs的线索


    你说的“它崩溃”到底是什么意思?正在引发什么异常?

    哇!这是一个很好的用例。它允许以高达1GB/s的速度将流式JSON值从
    java.io.InputStream
    立即解析到您的数据结构,而无需将所有输入保存在内存中。您是否尝试手动提供JSON模式?内存是否不足?您在Spark UI中看到了什么?正如@Daniel所建议的,当我得到超时错误时,您可以尝试提供模式。我也有这个模式,但仍然不工作。我只看到gzip-l的大小,没有在本地解压缩。没有足够的空间在本地解压。它在livy超时后崩溃,正好在一小时后;但我不想设置超时限制,我想这不是真正的并行计算。