首页 > 其他分享 >2024.1.27日报

2024.1.27日报

时间:2024-01-27 12:44:39浏览次数:31  
标签:2024.1 27 读取 show 日报 personDF json parquet spark

3.4 Spark SQL 应用 3.4.1 创建 DataFrame/DataSet 方式一:读取本地文件 ① 在本地创建一个文件,有 id、name、age 三列,用空格分隔,然后上传到 hdfs 上。 vim /root/person.txt 1 2 内容如下: 1 zhangsan 20 2 lisi 29 3 wangwu 25 4 zhaoliu 30 5 tianqi 35 6 kobe 40 1 2 3 4 5 6 7 ② 打开 spark-shell spark/bin/spark-shell ##创建 RDD val lineRDD= sc.textFile("hdfs://node1:8020/person.txt").map(_.split(" ")) //RDD[Array[String]] 1 2 3 4 5 6 ③ 定义 case class(相当于表的 schema) case class Person(id:Int, name:String, age:Int) 1 2 ④ 将 RDD 和 case class 关联 val personRDD = lineRDD.map(x => Person(x(0).toInt, x(1), x(2).toInt)) //RDD[Person] 1 2 ⑤ 将 RDD 转换成 DataFrame val personDF = personRDD.toDF //DataFrame 1 2 ⑥ 查看数据和 schema personDF.show 1 2 ⑦ 注册表 personDF.createOrReplaceTempView("t_person") 1 2 ⑧ 执行 SQL spark.sql("select id,name from t_person where id > 3").show 1 2 ⑨ 也可以通过 SparkSession 构建 DataFrame val dataFrame=spark.read.text("hdfs://node1:8020/person.txt") dataFrame.show //注意:直接读取的文本文件没有完整schema信息 dataFrame.printSchema 1 2 3 4 方式二:读取 json 文件 val jsonDF= spark.read.json("file:///resources/people.json") 1 2 接下来就可以使用 DataFrame 的函数操作 jsonDF.show 1 2 注意:直接读取 json 文件有schema 信息,因为json文件本身含有Schema信息,SparkSQL 可以自动解析。 方式三:读取 parquet 文件 val parquetDF=spark.read.parquet("file:///resources/users.parquet") 1 2 接下来就可以使用 DataFrame 的函数操作 parquetDF.show 1 2 注意:直接读取 parquet 文件有 schema 信息,因为 parquet 文件中保存了列的信息。 3.4.2 两种查询风格:DSL 和 SQL DSL风格示例: personDF.select(personDF.col("name")).show personDF.select(personDF("name")).show personDF.select(col("name")).show personDF.select("name").show 1 2 3 4 5 SQL 风格示例: spark.sql("select * from t_person").show 1 2 总结: DataFrame 和 DataSet 都可以通过RDD来进行创建; 也可以通过读取普通文本创建–注意:直接读取没有完整的约束,需要通过 RDD+Schema; 通过 josn/parquet 会有完整的约束; 不管是 DataFrame 还是 DataSet 都可以注册成表,之后就可以使用 SQL 进行查询了! 也可以使用 DSL! 3.4.3 Spark SQL 多数据源交互 读取 json 文件: spark.read.json("D:\\data\\output\\json").show() 1 2 读取 csv 文件: spark.read.csv("D:\\data\\output\\csv").toDF("id","name","age").show() 1 2 读取 parquet 文件: spark.read.parquet("D:\\data\\output\\parquet").show() 1 2 读取 mysql 表: val prop = new Properties() prop.setProperty("user","root") prop.setProperty("password","root") spark.read.jdbc( "jdbc:mysql://localhost:3306/bigdata?characterEncoding=UTF-8","person",prop).show() 1 2 3 4 5 6 写入 json 文件: personDF.write.json("D:\\data\\output\\json") 1 2 写入 csv 文件: personDF.write.csv("D:\\data\\output\\csv") 1 2 写入 parquet 文件: personDF.write.parquet("D:\\data\\output\\parquet") 1 2 写入 mysql 表: val prop = new Properties() prop.setProperty("user","root") prop.setProperty("password","root") personDF.write.mode(SaveMode.Overwrite).jdbc( "jdbc:mysql://localhost:3306/bigdata?characterEncoding=UTF-8","person",prop)

标签:2024.1,27,读取,show,日报,personDF,json,parquet,spark
From: https://www.cnblogs.com/Arkiya/p/17991309

相关文章

  • 2024.1.26 大寄特寄
    很好的数学专题,让我发疯A.居然直接加了个限制,要求是对于连续的子序列,要求相等,关键是一定有解,用到了鸽笼原理假设对两个数列求前缀和之后,分别是An,Bn最终要得到Ai-Aj=Bk-Bl但是这样肯定是很麻烦的,要枚举,但是如果移项就可以得到一个有相同格式的式子Ai-Bk =Aj-Bl......
  • 洛谷题解-P2712 摄像头
    https://www.luogu.com.cn/problem/P2712可以看出是拓扑排序,因为是有前后关系的,但是坑点在于点并不连续,值得记录一下(刚开始70分,后来才AC)注意坑点:拓扑排序,遍历的点不连续 #include<bits/stdc++.h>usingnamespacestd;constintN=1e5+5;intn,x,m,y,d[N],cnt=0,v......
  • OpenAI 宣布将通过更新解决 GPT-4 变懒问题丨 RTE 开发者日报 Vol.135
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......
  • 洛谷题单指南-排序-P1271 【深基9.例1】选举学生会
    原题链接:https://www.luogu.com.cn/problem/P1271题意解读:最直接的计数排序问题,借助一个桶h[N],对被投票的候选人x执行h[x]++,再按顺序遍历输出即可。100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=1005;inth[N];intmain(){intn,m;......
  • ARC127D Sum of Min of Xor
    ARC127DSumofMinofXor性质分析加通用套路。思路首先我们把这题的\(\min\)给去掉,那么我们按位算贡献,可以求出和。这是这种式子的通用套路。考虑加上\(\min\),那么我们先按照\((a_i,b_i)\)的最高位分为:\((1,0)\),\((0,1)\),\((1,1)\),\((0,0)\)四种情况。可以发现用贡献......
  • POJ2627 数独 (dfs or bfs)
    POJ2627数独(dfsorbfs)给出一个数独,空白用0表示,输出一个合理答案即可;SampleInput1103000509002109400000704000300502006060000050700803004000401000009205800804000107SampleOutput1436285795721394689867542313915427864689173527258639142374816956......
  • hey_left 16 Codeforces Round 827 (Div. 4)
    题目链接A.判最大的数是不是另外两个数的和#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintN=1e5+10;voidsolve(){inta,b,c;cin>>a>>b>>c;cout<<(max({a,b,c})==a+b+c-max({a,b,c})?"YES":"......
  • 27派生类的继承过程
    派生类的继承过程派生类如何初始化从基类继承来的成员变量?派生类继承所有可继承的成员变量和方法,除了构造和析构函数通过调用基类的构造函数初始化继承来的成员变量,调用基类的析构函数释放继承来的成员变量通过调用派生类的构造函数初始化新的成员变量,调用派生类的析构函数释......
  • 中国移动CMCC rax3000m免拆机刷OpenWRT uboot 20231027 NAND emmc MT7981
    1、100大洋购买的CMCCARX3000,不刷系统的时候也挺好用,就是无法满足特殊需求2、输入路由地址、192.168.10.1,进入路由管理界面,账号和密码,设备背面默认3、在高级设置->管理->配置管理->导出配置文件、得到:cfg_export_config_file.conf文件 4、在linux系统下,Ubuntu下进行文件配......
  • 《幻兽帕鲁》爆火,大厂坐不住了:这游戏是 AI 设计的?丨 RTE 开发者日报 Vol.134
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(RealTimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表......