首页 文章

将数据从未分区的配置单元表的子文件夹获取到 Spark 中的数据帧

提问于
浏览
1

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

即使未对表进行分区,也可以通过在蜂巢中设置一些属性来查询该表,如下所示,set hive.input.dir.recursive=true; set hive.mapred.supports.subdirectories=true; set hive.supports.subdirectories=true; set mapred.input.dir.recursive=true;

但是,当在 spark 中使用同一表通过df = sqlContext.sql("select * from table_name")之类的 sql 语句将数据加载到数据帧中时,该操作将失败,提示'The subfolders in the external s3 location is not a file'

我尝试使用sc.hadoopConfiguration.set("mapred.input.dir.recursive","true")方法在 spark 中设置上述蜂巢属性,但没有帮助。看起来这只会对 sc.textFile 种加载有所帮助。

1 回答

  • 1

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

    请注意,此处将该属性设置为 usign sqlContext 而不是 sparkContext。我在火花 1.6.2 中对此进行了测试

相关问题