【慕课网实战】七、以慕课网日志分析为例 进入大数据 Spark SQL 的世界
2024-10-20 06:24:17
用户:
方便快速从不同的数据源(json、parquet、rdbms),经过混合处理(json join parquet),
再将处理结果以特定的格式(json、parquet)写回到指定的系统(HDFS、S3)上去
Spark SQL 1.2 ==> 外部数据源API
外部数据源的目的
1)开发人员:是否需要把代码合并到spark中????
weibo
--jars
2)用户
读:spark.read.format(format)
format
build-in: json parquet jdbc csv(2+)
packages: 外部的 并不是spark内置 https://spark-packages.org/
写:people.write.format("parquet").save("path")
处理parquet数据
RuntimeException: file:/home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/src/main/resources/people.json is not a Parquet file
val DEFAULT_DATA_SOURCE_NAME = SQLConfigBuilder("spark.sql.sources.default")
.doc("The default data source to use in input/output.")
.stringConf
.createWithDefault("parquet")
#注意USING的用法
CREATE TEMPORARY VIEW parquetTable
USING org.apache.spark.sql.parquet
OPTIONS (
path "/home/hadoop/app/spark-2.1.0-bin-2.6.0-cdh5.7.0/examples/src/main/resources/users.parquet"
)
SELECT * FROM parquetTable
spark.sql("select deptno, count(1) as mount from emp where group by deptno").filter("deptno is not null").write.saveAsTable("hive_table_1")
org.apache.spark.sql.AnalysisException: Attribute name "count(1)" contains invalid character(s) among " ,;{}()\n\t=". Please use alias to rename it.;
spark.sqlContext.setConf("spark.sql.shuffle.partitions","10")
在生产环境中一定要注意设置spark.sql.shuffle.partitions,默认是200
操作MySQL的数据:
spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/hive").option("dbtable", "hive.TBLS").option("user", "root").option("password", "root").option("driver", "com.mysql.jdbc.Driver").load()
java.sql.SQLException: No suitable driver
import java.util.Properties
val connectionProperties = new Properties()
connectionProperties.put("user", "root")
connectionProperties.put("password", "root")
connectionProperties.put("driver", "com.mysql.jdbc.Driver")
val jdbcDF2 = spark.read.jdbc("jdbc:mysql://localhost:3306", "hive.TBLS", connectionProperties)
CREATE TEMPORARY VIEW jdbcTable
USING org.apache.spark.sql.jdbc
OPTIONS (
url "jdbc:mysql://localhost:3306",
dbtable "hive.TBLS",
user 'root',
password 'root',
driver 'com.mysql.jdbc.Driver'
)
外部数据源综合案例
create database spark;
use spark;
CREATE TABLE DEPT(
DEPTNO int(2) PRIMARY KEY,
DNAME VARCHAR(14) ,
LOC VARCHAR(13) ) ;
INSERT INTO DEPT VALUES(10,'ACCOUNTING','NEW YORK');
INSERT INTO DEPT VALUES(20,'RESEARCH','DALLAS');
INSERT INTO DEPT VALUES(30,'SALES','CHICAGO');
INSERT INTO DEPT VALUES(40,'OPERATIONS','BOSTON');
最新文章
- [Tip] 如何在BeyondCompare中忽略不重要的区别.
- smarty插件开发代替注册插件方法registerPlugin
- 处理程序“ExtensionlessUrlHandler-Integrated-4.0”在其模块列表
- Ⅰ.net通信指前提
- IP TCP HTTP Socket的区别
- 29个你必须知道的Linux命令
- Hackerrank 2020 February 2014 解题报告
- Sumblime Text 2 常用插件以及安装方法
- BZOJ 1641: [Usaco2007 Nov]Cow Hurdles 奶牛跨栏( floyd )
- ASP.NET MVC 使用Uploadify实现多文件异步无刷新上传
- Redux源码分析之bindActionCreators
- Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
- java基础:内存分配(上)
- #20175204 张湲祯 2018-2019-2《Java程序设计》第五周学习总结
- linux的基本操作概览
- 启动Jmeter4.0 后弹出命令窗口提示信息是什么意思?
- tomcat 启动Spring boot 项目
- 072——VUE中vuex之使用mutations修改购物车仓库数据
- 利用阿里巴巴封装的FastJSON来解析json并转换成map
- MYSQL IO innodb-buffer-pool
热门文章
- errors collectiions
- 有关于并发中的死锁(Deadlock)、饥饿(Starvation)、活锁(Livelock)
- ESP8266 01S WIFI 网络
- iframe父页面获取子页面元素方法
- 小组团队项目的NABCD分析
- Excel VBA 连接各种数据库(一) VBA连接MySQL数据库
- Java框架spring 学习笔记(六):属性注入
- Could not HEAD 'https://dl.google.com/dl/android/maven2/com/android/tools/build/gradle/3.2.0/gradle-3.2.0.pom'.
- Node.js的内存问题
- CentOS 7 安装与卸载MySQL 5.7