实验使用环境为spark-3.0.0-preview2,教程观看的版本为spark1.6,spark2.0开始对sql进行改进,用sparksession实现hivecontext和sqlcontext统一,合并dataframe和datasets等,按照老的教程会引起问题。
一. SQLContext报红,找不到依赖包。
解决办法:在pom中添加依赖:
<!--导入spark sql依赖-->
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.12</artifactId>
<version>3.0.0-preview2</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.4.6</version>
</dependency>
二. 生成sparkSession实例时提示Required type:SparkContext,Provided:JavaSparkContext
解决办法:通过toSparkContext方法转化:
JavaSparkContext scc = new JavaSparkContext(conf);
SparkContext sc = JavaSparkContext.toSparkContext(scc);
三. 没有DataFrame类型
解决办法:用Dataset替代:
修改前:DataFrame df = xxxxxxxx
修改后:Dataset<Row> df = xxxx
四. 读取json文件时提示
Exception in thread "main" org.apache.spark.sql.AnalysisException: Multiple sources found for json (org.apache.spark.sql.execution.datasources.v2.json.JsonDataSourceV2, org.apache.spark.sql.execution.datasources.json.JsonFileFormat), please specify the fully qualified class name.;
解决办法:指定json:
修改前:Dataset<Row> df = sparkSession.read().format("json").load("./json");
Dataset<Row> df = sparkSession.read().format("org.apache.spark.sql.
execution.datasources.json.JsonFileFormat").load("./json");
实验使用环境为spark-3.0.0-preview2,教程观看的版本为spark1.6,spark2.0开始对sql进行改进,用sparksession实现hivecontext和sqlcontext统一,合并dataframe和datasets等,按照老的教程会引起问题。一. SQLContext报红,找不到依赖包。解决办法:在pom中添加依赖:<!--导入spark sql依赖--><dependency> <groupId>org.apache.sp
Spark SQL是spark套件中一个模板,它将数据的计算任务通过SQL的形式转换成了RDD的计算,类似于Hive通过SQL的形式将数据的计算任务转换成了MapReduce。
Spark SQL的特点:
1、和Spark Core的无缝集成,可以在写整个RDD应用的时候,配置Spark SQL来完成逻辑实现。
2、统一的数据访问方式,Spark SQL提供标准化的SQL查询。
3、Hive的继承,Spark SQL通过内嵌的hive或者连接外部已经部署好的hive案例,实现了对hive语法的继承和操作。
4、标准化的连接方式,Spark SQL可以通过启动thrift Server来支持JD
1.2:sparkSQL的性能 5
1.2.1:内存列存储(In-Memory Columnar Storage) 6
1.2.2:字节码生成技术(bytecode generation,即CG) 6
1.2.3:scala代码优化 7
二:sparkSQL运行架构 8
2.1:Tree和Rule 9
2.1.1:Tree 10
2.1.2:Rule 10
2.2:sqlContext的运行过程 12
2.3:hiveContext的运行过程 14
2.4:catalyst优化器 16
三:sparkSQL组件之解析 17
3.1:LogicalPlan 18
3.2:SqlParser 20
3.1.1:解析过程 20
3.1.2:SqlParser 22
3.1.3:SqlLexical 25
3.1.4:query 26
3.3:Analyzer 26
3.4:Optimizer 28
3.5:SpankPlan 30
四:深入了解sparkSQL运行计划 30
4.1:hive/console安装 30
4.1.1:安装hive/cosole 30
4.1.2:hive/console原理 31
4.2:常用操作 32
4.2.1 查看查询的schema 32
4.2.2 查看查询的整个运行计划 33
4.2.3 查看查询的Unresolved LogicalPlan 33
4.2.4 查看查询的analyzed LogicalPlan 33
4.2.5 查看优化后的LogicalPlan 33
4.2.6 查看物理计划 33
4.2.7 查看RDD的转换过程 33
4.2.8 更多的操作 34
4.3:不同数据源的运行计划 34
4.3.1 json文件 34
4.3.2 parquet文件 35
4.3.3 hive数据 36
4.4:不同查询的运行计划 36
4.4.1 聚合查询 36
4.4.2 join操作 37
4.4.3 Distinct操作 37
4.5:查询的优化 38
4.5.1 CombineFilters 38
4.5.2 PushPredicateThroughProject 39
4.5.3 ConstantFolding 39
4.5.4 自定义优化 39
五:测试环境之搭建 40
5.1:虚拟集群的搭建(hadoop1、hadoop2、hadoop3) 41
5.1.1:hadoop2.2.0集群搭建 41
5.1.2:MySQL的安装 41
5.1.3:hive的安装 41
5.1.4:Spark1.1.0 Standalone集群搭建 42
5.2:客户端的搭建 42
5.3:文件数据准备工作 42
5.4:hive数据准备工作 43
六:sparkSQL之基础应用 43
6.1:sqlContext基础应用 44
6.1.1:RDD 44
6.1.2:parquet文件 46
6.1.3:json文件 46
6.2:hiveContext基础应用 47
6.3:混合使用 49
6.4:缓存之使用 50
6.5:DSL之使用 51
6.6:Tips 51
七:ThriftServer和CLI 51
7.1:令人惊讶的CLI 51
7.1.1 CLI配置 52
7.1.2 CLI命令参数 52
7.1.3 CLI使用 53
7.2:ThriftServer 53
7.2.1 ThriftServer配置 53
7.2.2 ThriftServer命令参数 54
7.2.3 ThriftServer使用 54
7.3:小结 56
八:sparkSQL之综合应用 57
8.1:店铺分类 57
8.2:PageRank 59
8.3:小结 61
九:sparkSQL之调优 61
9.1:并行性 62
9.2: 高效的数据格式 62
9.3:内存的使用 63
9.4:合适的Task 64
9.5:其他的一些建议 64
十:总结 64
java.lang.IllegalArgumentException: Illegal pattern component: XXX
第一次出现这个问题:主要原因是缺少依赖,在pom文件中导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.5&
做推荐系统实战的时候,执行FeatureEngineering(scala)文件出现以下错误:
ERROR SparkContext: Error initializing SparkContext. java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200
解决办法:
1.点击Edit Configurations
2.如果你的设置界面有下面红框,直接粘贴以下这串文字
-Xms128m -
找到之后,需要将该库、jar包,加入到当前项目,使得代码中的import xxx得以正常导入
二、解决方法
1、去apache(点击这里可直接进入)官网下载apache.spark
2、打开IDEA软件
点击File——>Project Structure——>Modules——>Dependencies
3、点击右边的+,选择 Jars或目录,选择下载好的Jar包,单击确定,然后勾选中刚添加进去的jars