当前位置:网站首页>Spark读取多目录
Spark读取多目录
2022-07-29 21:53:00 【南风知我意丿】
项目场景:
上游任务按类型生成json文件存放到hdfs上,会生成很多目录。
下游任务需要读取这些目录下得文件,生成df进行处理。
解决方案:
目录结构:

1.sparkContext
方式一
val session: SparkSession = SparkSession.builder().master("local[*]").appName("read_Muti_catalogue").getOrCreate()
val sc: SparkContext = session.sparkContext
import session.implicits._
//方式一:
sc.textFile("/tmp/lzx/a,/tmp/lzx/b").toDF().show(false)
方式二
val session: SparkSession = SparkSession.builder().master("local[*]").appName("read_Muti_catalogue").getOrCreate()
val sc: SparkContext = session.sparkContext
import session.implicits._
//2.1.方式二:匹配字符
val path1 = "/tmp/lzx/[a]"
val path2 = "/tmp/lzx/[b]"
val arryPath: Array[String] = Array(path1, path2)
val rdds: Array[RDD[String]] = arryPath.map(sc.textFile(_))
sc.union(rdds).toDF().show(false)
//2.2.方式二:匹配数字
val path3 = "/tmp/lzx/*1"
val path4 = "/tmp/lzx/*2"
val arryPath2: Array[String] = Array(path3, path4)
val rdds2: Array[RDD[String]] = arryPath2.map(sc.textFile(_))
sc.union(rdds2).toDF().show(false)
session.close()
2.sparkSession
//3.SparkSession
println("3.SparkSession-----------------------")
val path5 = "/tmp/lzx/*1"
val path6 = "/tmp/lzx/*2"
val arryPath3: Array[String] = Array(path5, path6)
// :_* 作为一个整体,一般可以用于获取一个数组的全部字段
//spark.read.textFile方法返回只有一列value的DataSet表。
val ds: Dataset[String] = session.read.textFile(arryPath3: _*)
ds.show()
//spark.read.text方法返回只有一列value的DataFrame表。
val df: DataFrame = session.read.text(arryPath3: _*)
df.show()
3.通配符使用说明

注意:
每个路径都要定位到最后一级。
路径之间不能存在包含关系。
目录与文件不要混放,即放在同一个目录下。
路径中可使用通配符
参考
https://blog.csdn.net/weixin_40829577/article/details/103847405
边栏推荐
- GBASE 8s 如何估算索引使用多少空间
- SQL教程之性能不仅仅是查询
- SAP BC 源代码搜索
- JZ24 反转链表
- The implementation of the flood control project and safety construction project in the flood storage and detention areas in Luluze and Ningjinbo was launched
- 力扣解法汇总593-有效的正方形
- 怎样把某个公司所有的专利全部查到、一网打尽?
- An article to understand service governance in distributed development
- 撰写英文文献有哪些技巧?
- 全球都热炸了,谷歌服务器已经崩掉了
猜你喜欢
随机推荐
GBASE 8s 如何估算索引使用多少空间
Add obsolete flag to pdf
研究生怎么申请专利,流程是什么?
二叉树的操作集:(二叉树的定义,遍历)
Sorry, it's hard for you to earn middle-aged money
怎样下载国内外专利?
我想申请专利,却没有经验,如何学会写专利申请文件?
给图片左上角加logo标识、左下角加时间和地址、地址到达指定长度换行
聊聊阻容降压原理 和 实际使用的电路
C. Color the Picture(贪心/构造)
高等数学(第七版)同济大学 习题3-8 个人解答
一、HikariCP源码分析之获取连接流程一
bright day
【板栗糖GIS】DOS—如何在目录文件中批量建立子文件夹
leetcode122. Best Time to Buy and Sell Stock II 买卖股票的最佳时机 II(简单)
【Verilog】Verilog设计进阶
六、HikariConfig配置解析
Xshell 7 prompts "To continue using this program, you must apply the latest update or use a new version"
GBASE 8s 自动删除正在被使用的数据库
Verilog 加法器设计








