如何读取包含 JSON 文件的文件夹的目录:Spark Scala

Posted

技术标签:

【中文标题】如何读取包含 JSON 文件的文件夹的目录:Spark Scala【英文标题】:How to read Directory with folders containing JSON files : Spark Scala 【发布时间】:2016-07-05 14:42:50 【问题描述】:

我在从目录(带有 json 文件的文件夹)读取时不断获取此文件。我用过:

// sc : An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.jsonFile("s3://testData")
df.show()

错误:

java.io.IOException: No input paths specified in job 
    at org.apache.hadoop.mapred.FileInputFormat.listStatus(FileInputFormat.java:173) 
    at org.apache.hadoop.mapred.FileInputFormat.getSplits(FileInputFormat.java:279) 
    at org.apache.spark.rdd.HadoopRDD.getPartitions(HadoopRDD.scala:207) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 
    at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 
    at scala.Option.getOrElse(Option.scala:120) at org.apache.spark.rdd.RDD.partitions(RDD.scala:237) 
    at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
     at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 
     at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 
     at scala.Option.getOrElse(Option.scala:120)
     at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
      at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
      at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 
      at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 
      at scala.Option.getOrElse(Option.scala:120)
       at org.apache.spark.rdd.RDD.partitions(RDD.scala:237)
       at org.apache.spark.rdd.MapPartitionsRDD.getPartitions(MapPartitionsRDD.scala:35)
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:239) 
        at org.apache.spark.rdd.RDD$$anonfun$partitions$2.apply(RDD.scala:237) 
        at scala.Option.getOrElse(Option.scala:120)

我的文件系统看起来像:

testData - 有 3 个文件夹(00、01、02)的目录,每个文件夹有 1 个文件/文件夹

testData/00/temp1.json.gz 
testData/01/temp2.json.gz 
testData/02/temp3.json.gz  

我用的是spark 1.5,我的阅读方式有什么问题吗?

【问题讨论】:

你知道在 Quora 上向我发送匿名请求不会让我想回答这个问题。 quora.com/unanswered/… 【参考方案1】:

效率不高但你可以sqlContext.jsonFile("s3://testData/*/*")

【讨论】:

为什么效率不高? @Ilya_Gazman tech.kinja.com/…

以上是关于如何读取包含 JSON 文件的文件夹的目录:Spark Scala的主要内容,如果未能解决你的问题,请参考以下文章

python - 如何在python中附加一个列表时处理异常,其中包含从存储从.json文件读取的数据的dict读取的数据?

如何从目录中读取文件并作为 JSON 发送给客户端?

Python 从所有子目录中读取 JSON 文件

如何在javascript中从json文件中读取数据

尝试在 Python 包中读取 JSON 文件

boost::property_tree::json_parser::read_json 如果路径包含西里尔字符则无法读取文件