Apache spark 将未分区配置单元表的子文件夹中的数据获取到spark中的数据框中

Apache spark 将未分区配置单元表的子文件夹中的数据获取到spark中的数据框中,apache-spark,amazon-s3,hive,Apache Spark,Amazon S3,Hive,配置单元中有一个指向未分区的s3位置的外部表。该表指向s3中的一个文件夹,但数据位于该文件夹中的多个子文件夹中 即使未通过在配置单元中设置几个属性对该表进行分区,也可以查询该表,如下所示:, 设置hive.input.dir.recursive=true 设置hive.mapred.supports.subdirectories=true set-hive.supports.subdirectories=true 设置mapred.input.dir.recursive=true 但是,当spa

配置单元中有一个指向未分区的s3位置的外部表。该表指向s3中的一个文件夹,但数据位于该文件夹中的多个子文件夹中

即使未通过在配置单元中设置几个属性对该表进行分区,也可以查询该表,如下所示:,
设置hive.input.dir.recursive=true
设置hive.mapred.supports.subdirectories=true
set-hive.supports.subdirectories=true
设置mapred.input.dir.recursive=true

但是,当spark中使用相同的表,使用类似于
df=sqlContext.sql(“select*from table_name”)
的sql语句将数据加载到数据帧中时,操作会失败,并说
“外部s3位置中的子文件夹不是文件”


我尝试使用
sc.hadoopConfiguration.set(“mapred.input.dir.recursive”、“true”)
方法在spark中设置上述配置单元属性,但没有任何帮助。看起来这只对sc.textFile类型的加载有帮助。

这可以通过在spark中设置以下属性来实现:,
sqlContext.setConf(“mapreduce.input.fileinputformat.input.dir.recursive”、“true”)

请注意,该属性是使用Sign sqlContext而不是sparkContext设置的。 我在spark 1.6.2中对此进行了测试