spark sql
spark-sql 写代码方式 1、idea里面将代码编写好打包上传到集群中运行,上线使用 spark-submit提交 2、saprk shell (repl) 里面使用sqlContext 测试使用,简单任务使用 spark-shell --master yarn-client 不能使用yarn-cluster 3、spark-sql spark-sql --master yarn-client 不能使用yarn-cluster 可以整合hive 使用hive的元数据 1、在hive的hive-site.xml修改一行配置,增加了这一行配置之后,以后在使用hive之前都需要先启动元数据服务 <property> <name>hive.metastore.uris</name> <value>thrift://master:9083</value> </property> 2、将hive-site.xml 复制到spark conf目录下 cp hive-site.xml /usr/local/soft/spark-2.4.5/conf/ 3、启动hive元数据服务 nohup hive --service metastore >> metastore.log 2>&1 & 4、 将mysql 驱动包复制到saprk jars目录下 cp mysql-connector-java-5.1.17.jar /usr/local/soft/spark-2.4.5/jars/ 整合好之后在spark-sql 里面就可以使用hive的表了 spark-sql --master yarn-client --conf spark.sql.shuffle.partitions=2 不能使用cluster模式 在spark-sql中设置运行参数 set spark.sql.shuffle.partitions=2; create table student ( id string, name string, age int, gender string, clazz string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS textfile location '/data/student/'; create table score ( student_id string, cource_id string, sco int ) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS textfile location '/data/score/';
spark jdbc
1、spark和hive整合没有问题 nohup hive --service metastore >> metastore.log 2>&1 & 2、开启spark jdbc 服务 cd /usr/local/soft/spark-2.4.5/sbin/ ./start-thriftserver.sh --master yarn-client 3、在命令行中访问 cd /usr/local/soft/spark-2.4.5/bin/ ./beeline 输入 !connect jdbc:hive2://master:10000 设置sparkshuffle并行度 set spark.sql.shuffle.partitions=2; 开启AQE查询优化 set spark.sql.adaptive.enabled=true; // hint sql中的类似注解的写法 // 产生小文件 CREATE TABLE student_copy1 USING CSV AS SELECT /*+ REPARTITION(20) */ * FROM student; //合并小文件, REPARTITION 会产生shuffle ,可以用于增加分区 CREATE TABLE student_copy2 USING CSV AS SELECT /*+ REPARTITION(1) */ * FROM student_copy1; //合并小文件, COALESCE 不会产生shuffle, 不能用于增加分区 CREATE TABLE student_copy3 USING CSV AS SELECT /*+ COALESCE(1) */ * FROM student_copy1; //将表缓存到内存中 cache table student; //清空缓存 UNCACHE table student; 更新缓存 REFRESH TABLE student; 指定持久化级别 3.0才支持 CACHE TABLE student_gender OPTIONS ('storageLevel' 'MEMORY_ONLY'); 大表和小表关联的时候对小表进行广播,实现mapjoin select /*+ BROADCAST(a) */ * from student as a join score as b on a.id=b.student_id;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能