ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

从外部存储的结构化文件创建DataFrame---常用的一种方式

2022-08-27 12:31:53  阅读:182  来源: 互联网

标签:val 文件创建 DataFrame --- -- json session parquet


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文件格式存储的
    csv文件--是以,分割的一种文件格式,可以使用execel或者记事本打开的一种特殊的结构化数据我呢见
    "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()

标签:val,文件创建,DataFrame,---,--,json,session,parquet
来源: https://www.cnblogs.com/jsqup/p/16630333.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有