当前位置:网站首页>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
边栏推荐
猜你喜欢

Advanced Mathematics (Seventh Edition) Tongji University Exercises 3-7 Individual Answers

Numpy array processing (2)

一篇关于Web3.0如何走向安全时代的说明

啊?现在初级测试招聘都要求会自动化了?

GBASE 8s 数据库复合索引

动态规划专题

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

linux使用脚本安装redis

百度智能云章淼:详解企业级七层负载均衡开源软件BFE

新库上线 | CnOpenData国际货运代理信息数据
随机推荐
华东师范大学副校长周傲英:数据赋能,从数据库到数据中台
OR59 字符串中找出连续最长的数字串
Numpy array processing (2)
都有哪些查找和下载英文文献的方法?
【板栗糖GIS】arcmap—标注太长,如何换行显示
新库上线 | CnOpenData租赁和商务服务业工商注册企业基本信息数据
全系都更换带T四缸,安全、舒适一个不落
GBASE 8s 数据库唯一索引
研究生怎么申请专利,流程是什么?
JZ18 删除链表的节点
GBASE 8s 数据库的智能大对象备份
聊聊阻容降压原理 和 实际使用的电路
Official announcement!Suzhou Wujiang Development Zone launches electronic labor contract platform
[HDLBits brush questions] Verilog Language (4) Procedures and More Verilog Features section
力扣解法汇总593-有效的正方形
tkinter绘制组件(31)——支点标题
刀具更换策略问题(完工)
5V升压充电8.4V芯片
leetcode122. Best Time to Buy and Sell Stock II
HMS Core音频编辑服务音源分离与空间音频渲染,助力快速进入3D音频的世界