5 json scala amazon-s3 apache-spark pyspark
我有一个包含文件夹的目录,每个文件夹都包含压缩的JSON文件(.gz).目前我喜欢:
val df = sqlContext.jsonFile("s3://testData/*/*/*")
df.show()
Run Code Online (Sandbox Code Playgroud)
例如:
testData/May/01/00/File.json.gz
Run Code Online (Sandbox Code Playgroud)
每个压缩文件大约为11到17 GB.
我有:
压缩文件有多个json对象/文件.这个过程需要花费大量时间才能阅读(只需要上面两个语句).有没有更快的方法来做到这一点?架构也很复杂.我打算写一些查询来分析数据集.但我担心从s3读取数据所需的时间.
最大负载可以是10TB.我打算稍后使用缓存来处理查询.
如果您的JSON统一结构化,我建议您为Spark提供JSON文件的架构,这样可以大大加快处理速度.
当您不提供架构时,Spark将首先读取文件中的所有行以推断架构,正如您所观察到的那样,架构可能需要一段时间.
有关如何创建架构的信息,请参阅此文档:http://spark.apache.org/docs/latest/sql-programming-guide.html#programmatically-specifying-the-schema
然后你只需要将你创建的模式添加到jsonFile调用:
val df = sqlContext.jsonFile("s3://testData/*/*/*", mySchema)
Run Code Online (Sandbox Code Playgroud)
此时(我正在使用Spark 1.6.2)似乎jsonFile已被弃用,因此切换到sqlContext.read.schema(mySchema).json(myJsonRDD)(myJsonRDD类型的地方RDD[String])可能更好.
| 归档时间: |
|
| 查看次数: |
8416 次 |
| 最近记录: |