spark sql-文件夹中的递归读取

kuuvgm7e  于 2021-06-26  发布在  Hive
关注(0)|答案(0)|浏览(751)

我尝试在sparksql中使用hivecontext来利用hiveql中的一些windows函数。但是它不能帮助我递归地读取文件夹中的数据文件(按年份和月份划分文件夹)。
我的文件夹:
data/outputoozie/22/year=2016关于司机
数据/outputoozie/22/year=2016/month=10
司机数据/outputoozie/22/年=2016/月=9
数据/outputoozie/22/year=2016/month=10/1
数据/outputoozie/22/year=2016/month=10/2
数据/outputoozie/22/year=2016/month=10/3
数据/outputoozie/22/year=2016/month=9/1
数据/outputoozie/22/year=2016/month=9/2
数据/outputoozie/22/year=2016/month=9/3
下面是我如何启动我的Hive上下文:

val conf = new SparkConf().setAppName("Extraction process for ").setIfMissing("spark.master", "local[*]")
val sc = SparkContext.getOrCreate(conf)
sc.hadoopConfiguration.set("mapreduce.fileoutputcommitter.marksuccessfuljobs", "false")
sc.hadoopConfiguration.set("parquet.enable.summary-metadata", "false")
sc.hadoopConfiguration.set("mapreduce.input.fileinputformat.input.dir.recursive","true")
sc.hadoopConfiguration.set("hive.mapred.supports.subdirectories","true")
//val hiveContext = sqlContext.asInstanceOf[HiveContext] 
val hiveContext = sqlContext.asInstanceOf[HiveContext]
hiveContext.setConf("spark.sql.parquet.compression.codec", "snappy")
hiveContext.setConf("mapreduce.input.fileinputformat.input.dir.recursive","true")
hiveContext.setConf("mapred.input.dir.recursive","true") 
hiveContext.setConf("hive.mapred.supports.subdirectories","true")

读取文件:
hivecontext.read.parquet(urldecover.decode(partitionlocation.get.tostring,“utf-8”))==>异常:找不到文件
但对于sql上下文来说没关系:

val sqlContext = new SQLContext(sc)
sqlContext.setConf("spark.sql.parquet.compression.codec", "snappy")
sqlContext.setConf("mapreduce.input.fileinputformat.input.dir.recursive","true")

谢谢你的建议!!!!

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题