spark读取普通文件

spark读取普通文件

txt文件

复制代码
"""
将一行数据当做一个字段,需要自己切割 字段名称为value
表结构 可以从sql中搞
"""
df = spark.read.text("../../data/wordcount/input/data.txt")
df = spark.read.format("text").load("hdfs://shucang:9820/behavior/ads/ads_visit_type")

df.createOrReplaceTempView("wordcount")

json文件

复制代码
"""
读取json文件
直接就有表结构了
"""

df1 = spark.read.format("json").load("../../resources/person.json").show()
df2 = spark.read.json("../../resources/person.json").show()

csv文件(固定分割符的文件)

复制代码
"""
,分割符的文件 且含有表头
自动获取结构
"""
df = spark.read.format("csv").option("header",True).load("../../resources/homework1/3.txt")
"""
,分割符的文件 没有表头
获取结构的方式
"""
spark.read.csv("../../resources/homework1/3.txt")

"""
:: 分隔符的文件
"""
df = spark.read.format("csv").option("sep","::").load("../../resources/input/movies.dat")

总结:
spark.read.format("json").load(path)
spark.read.format("csv").load(path)
spark.read.format("parquet").load(path)

spark.read.json(path)
spark.read.csv(path)
spark.read.parquet(path)

这都是一样的

创建表结构的方式

复制代码
"""
按照"," 自动分割 列名为 _c0 _c1 _c2 
"""
    # 修改列名
    # 方式一:withColumnRenamed
df = spark.read.csv("../../resources/homework1/3.txt").withColumnRenamed("_c0","id") .withColumnRenamed("_c1","username").show()
    # 方式二:toDF("","") 和将RDD转为DF有区别 不加[]
df = spark.read.csv("../../resources/homework1/3.txt").toDF("id","username","math","computer","english")
    # 方式三:toDF的变种
    tupleA = ("id","username","math","computer","english")
df = spark.read.csv("../../resources/homework1/3.txt").toDF(*tupleA)
    # 方式四:这种和 rdd转为df的情况比较相似
    user_schema = StructType([
          StructField(name="emp_id", dataType=StringType(), nullable=False),
          StructField(name="emp_name", dataType=StringType(), nullable=True),
          StructField(name="salary", dataType=DoubleType(), nullable=True),
          StructField(name="comm", dataType=DoubleType(), nullable=True),
          StructField(name="dept_id", dataType=LongType(), nullable=True)
        ])
      # 使用csv 读取了一个 \t 为分隔符的文件,读取的数据字段名很随意,所以可以自定义
df = spark.read.format("csv").option("sep","\t").load("../../datas/emp.tsv",schema=user_schema)
    

# 创建一个表
df.createOrReplaceTempView("t_name")
相关推荐
草履虫建模3 小时前
力扣算法 1768. 交替合并字符串
java·开发语言·算法·leetcode·职场和发展·idea·基础
naruto_lnq5 小时前
分布式系统安全通信
开发语言·c++·算法
易营宝5 小时前
多语言网站建设避坑指南:既要“数据同步”,又能“按市场个性化”,别踩这 5 个坑
大数据·人工智能
学嵌入式的小杨同学5 小时前
【Linux 封神之路】信号编程全解析:从信号基础到 MP3 播放器实战(含核心 API 与避坑指南)
java·linux·c语言·开发语言·vscode·vim·ux
fanstuck6 小时前
从0到提交,如何用 ChatGPT 全流程参与建模比赛的
大数据·数学建模·语言模型·chatgpt·数据挖掘
春日见6 小时前
vscode代码无法跳转
大数据·人工智能·深度学习·elasticsearch·搜索引擎
Re.不晚6 小时前
Java入门17——异常
java·开发语言
ASKED_20196 小时前
Langchain学习笔记一 -基础模块以及架构概览
笔记·学习·langchain
精彩极了吧6 小时前
C语言基本语法-自定义类型:结构体&联合体&枚举
c语言·开发语言·枚举·结构体·内存对齐·位段·联合
萤丰信息7 小时前
AI 筑基・生态共荣:智慧园区的价值重构与未来新途
大数据·运维·人工智能·科技·智慧城市·智慧园区