当前位置:网站首页>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
边栏推荐
- 一篇关于Web3.0如何走向安全时代的说明
- 【点云】M3DeTR: Multi-representation, Multi-scale, Mutual-relation 3D Object Detection with Transformers
- Advanced Mathematics (Seventh Edition) Tongji University Exercises 3-8 Individual Answers
- Docker 下 Oracle 安装与配置
- Verilog 加法器设计
- The implementation of the flood control project and safety construction project in the flood storage and detention areas in Luluze and Ningjinbo was launched
- GBASE 8s 数据库的恢复
- NC193 二叉树的前序遍历
- 八、HikariCP源码分析之ConcurrentBag一
- JZ25 合并两个排序的链表
猜你喜欢

【Verilog 设计】Verilog 实现偶数、奇数分频和任意小数分频

不要再用if-else!

GBASE 8s 数据库的逻辑日志备份

SAP BC 源代码搜索

我想申请专利,却没有经验,如何学会写专利申请文件?

全球都热炸了,谷歌服务器已经崩掉了

怎样下载国内外专利?

Huawei Enjoy 50 Pro evaluation: HarmonyOS blessing is smoother and safer

专利说明书怎么写?

HMS Core audio editing service audio source separation and spatial audio rendering, helping to quickly enter the world of 3D audio
随机推荐
全系都更换带T四缸,安全、舒适一个不落
【点云】M3DeTR: Multi-representation, Multi-scale, Mutual-relation 3D Object Detection with Transformers
install mysql using script
三、HikariCP源码分析之获取连接流程三
24小时伦敦金走势图分析
模型评价指标汇总(持续更新)
D. Rain(思维/线性代数/差分数组)
ict的终极模式 是软件研发
动态规划专题
iNFTnews | 福布斯的Web3探索
E. XOR Tree(树形dp/异或/最近公共祖先)
GBASE 8s PAM插入式身份验证模块
百度智能云章淼:详解企业级七层负载均衡开源软件BFE
SwiftUI 手势大全之可用的手势类型有哪些(教程含源码)
5V升压充电8.4V芯片
HMS Core audio editing service audio source separation and spatial audio rendering, helping to quickly enter the world of 3D audio
使用脚本安装mysql
SAP BC 源代码搜索
CNCF Keith Chan:分布式云时代,云原生社区的发展与趋势
viewpager fragment data refresh