options的多种模式
| Option可选操作项 |
| .option("mode", "FAILFAST") |
| 读取模式的常用值有 |
| permissive:当遇到损坏的记录时,将其所有字段设置为 null, |
| dropMalformed:删除格式不正确的行 |
| failFast:遇到格式不正确的数据时立即失败 |
| .option("inferSchema", "true") |
| .option("path", "path/to/file(s)") |
| .option("header", "false") |
1. 从txt文件中创建DataFrame
| 从txt文件中创建DataFrame |
| 如果是从普通的文本文件创建DataFrame 文件中的列和列的分隔符不清楚 |
| 所以创建的DataFrame只有一列,一列就是一行数据 |
| |
| val sc = new SparkConf().setMaster("local[2]").setAppName("demo") |
| val session = SparkSession.builder().config(sc).getOrCreate() |
| val map = Map[String, String]("mode" -> "FAILFAST", "inferSchema" -> "true") |
| val frame = session.read.options(map).text("hdfs://node1:9000/student.txt") |
| frame.show() |
2. 从json文件中创建DataFrame -- 常用
| |
| 从json文件中创建DataFrame -- 常用 -- 列名就是json对象的key值 |
| {"name": "zs","age": 20,"sex":"男"} |
| json文件只能存在json对象,每一个json对象之间以换行符分隔 |
| |
| val map1 = Map[String, String]("mode" -> "FAILFAST", "inferSchema" -> "true") |
| val dataFrame = session.read.options(map1).json("hdfs://node1:9000/student.json") |
| dataFrame.show() |
3. 从csv文件中创建DataFrame -- 最常用
| 从csv文件中创建DataFrame |
| csv文件 |
| "header"->"true"把第一列当作表格的列名来处理 |
| |
| val map2 = Map[String, String]("mode" -> "FAILFAST", "inferSchema" -> "true", "header" -> "true") |
| val dataFrame2 = session.read.options(map2).csv("hdfs://node1:9000/student.csv") |
| dataFrame2.show() |
| val dataFrame4 = session.read.options(map2).format("json").load("hdfs://node1:9000/student.json") |
| dataFrame4.show() |
| // sparksql将结果输出方式写出 |
| // dataFrame2.write.mode("append").parquet("hdfs://node1:9000/parquet") |
4. 从parquet格式创建DataFrame--常用
| 从parquet格式创建DataFrame |
| parquet格式文件Hive、SparkSQL、Flink都支持。列式存储文件格式 |
| |
| val dataFrame3 = session.read.options(map2).parquet("hdfs://node1:9000/parquet") |
| dataFrame3.show() |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?