| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> pyspark--读取数据 -> 正文阅读 |
|
[大数据]pyspark--读取数据 |
pyspark读取数据参数介绍format
指定不同格式来读取文件,例如以下为指定json格式读取数据:
针对常用几个文件格式,pyspark也可以直接通过对应的文件格式读取,如:
具体内容见后文。 schema
指定读取的数据的schema列信息,有些数据文件中没有结构信息,需要手动指定。有些文件类型如json可以省略这一步,文件中自带schema信息,不过也需要视具体情况而定。
load
通过load指定文件路径,也可以在括号内通过key-value的格式指定不同的格式、schema等。示例如下:
table
从指定数据表中读取数据,并返回一个dataframe,使用如下:
可以从指定的hive数据表中读取数据。 option
将参数以key-value的形式指定,这部分参数需要依据读取的文件格式来指定不同的参数,可参考源码。 参考链接:spark.read.option 读取文件json有以下这么三种方式读取json文件:
这三种方法本质上都是一致的,都是读取单个json文件,可自行选择。 而如果我们要读取多个格式一致的json文件,可以采用以下方式:
当然啦,在实际工作中,我们很有可能碰到需要读取特定目录的文件,这时需要指定通配符来匹配对应的文件目录,例如:
还要很多其他格式,可以参考:读取文件通配符 有些情况下,我们并不需要将数据的所有列都读取出来,这时就可以通过指定schema来部分读取自己想要的列,同时也能指定数据的类型,如下所示:
结果显示,当不指定schema信息时,默认读取的name是string类型,age是long类型。而我们指定了age类型指定为int后,spark中其对应类型为integer。官方称这种格式为 上述都是在本地进行测试,如果是在实际工作中,如果数据是存储在HDFS文件系统中,读取的方式与上述一样,只不过路径是HDFS中的。 如果数据存储在S3中,我们的读取方式如下:
csv
以上两种方式是比较简单的读取csv文件的方法,而打印结果时会发现,并没有将表头当作dataframe的schema信息:
这个时候就需要指定参数了,如下所示,这样就可以将结果正确的读取到dataframe中了。
也可以通过指定schema来读取没有表头的csv文件数据:
指定age为int时结果读取到的数据是null,因而用string读取数据,具体原因暂未知。不过在指定表头读取的数据结果来看,age也是string类型,或许与文件类型有关。 parquet和orcparquet与orc文件介绍参考:parquet与orc 这两种格式文件都是采用snappy压缩,snappy是一种高效的文件压缩方式,参考:snappy压缩 读取文件示例如下所示,两种方式读取的数据均能将schema信息读取到。
读取数据表hive可直接用spark的api接口读取:
不过这个方法比较单一,无法灵活的适应各种复杂的情况。复杂的情况可以使用sparksql进行数据表的读取:
括号内就是普通的sql语句,可以指定选取的列,过滤的条件等。 jdbc
示例如下:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:31:43- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |