执行spark报错信息:Exceptioninthread"main"org.apache.spark.sql.AnalysisException

当执行Spark时遇到“Exceptioninthread”main“org.apache.spark.sql.AnapsyException”错误时,首先确保Hadoop已添加到系统环境变量中。
例如,确保HADOOP_HOME等环境变量配置正确。
如果问题仍然存在,具体错误消息可能是“java.lang.RuntimeException:java.lang.RuntimeException:Errorwhilerunningcommandtogetfilepermissions:ExitCodeExceptionexitCode=-1073741515”。
此错误消息是由于Hadoop/bin目录中缺少两个主文件造成的。
要解决此问题,您需要下载并安装这两个缺失的文件。
下载地址通常可以通过官方文档或者Hadoop社区获取。
确保下载的文件版本与当前使用的Hadoop版本兼容。
下载完成后,确保这两个文件正确放置在Hadoop/bin目录中。
添加完文件后,重新启动系统,再次执行Spark相关操作,检查错误是否还存在。
如果重启并重新执行后仍然遇到错误提示,问题可能是系统中缺少MSVCR100.dll运行库。
为了解决这个问题,你需要下载并安装这个运行库。
下载地址和具体步骤以运行库官方发布文档为准。
安装MSVCR100.dll运行库后,再次执行Spark相关操作,确保错误得到解决。
至此,通过检查并修复丢失的Hadoop文件和运行时库,执行Spark时遇到的主要“Exceptioninthread”错误“org.apache.spark.sql.AnapsyException”应该可以得到有效解决。

大数据分析应该掌握哪些基础知识?

Java基本语法

·If/switch分支结构

·For/while/dowhile循环结构

·方法声明与调用

·方法重载

·使用数组

·命令行参数、变量参数

IDEA

·IDEA常用设置,常用快捷键

·模板自定义

·连接Tomcat

·Web项目案例实践

面向对象编程

·封装、继承、多态、构造函数、包

·异常处理机制

·抽象类、接口、内部类

·通常有基本的API和集合列表/集合/地图

·通用、创建线程与初始化

·深入采集源码分析、常用数据结构分析

·线程安全、同步与通信、IO流系统

·反思、机制类加载、网络编程

Java8/9/10/11新特性

·Lambda表达式、方法引用

·构造函数引用、StreamAPI

·jShell命令(JShell)

·接口私有方法、可选改进

·类型局部变量推断

·简化编译和运行程序等

MySQL

·DML语言、DDL语言、DCL语言

·分组查询、Join查询、子查询、联合查询、函数

·流程控制语句,特征事务、事务隔离级别等

JDBC

·使用JDBC完成增删改查和数据库查询操作

·批处理操作

·数据库连接池原理及应用

·常见数据库连接池C3P0、DBCP、Druid等

Maven

·环境建造Maven

·本地仓库&中央仓库

·创建Web项目

·自动提交

·持续继承

·持续交付

Linux

·VI/VIM编辑器

·远程登录及系统管理操作

·常用命令

·软件包管理真题&企业

Shell编程

·自定义变量和特殊变量

·运算符

·条件判断

·流程控制

·系统功能&自定义函数

·常用工具命令

·面试真题

Hadoop

·生态学概论Hadoop

·Hadoop运行模式

·源码编译

·HDFS底层文件系统详解

·DN&NN工作机制

·HDFSAPI操作

·MapReduce框架原理

·数据压缩

·线程机制

·案例详细说明MapReduce

·Hadoop参数调优

·HDFS多目录存储

·多磁盘数据均衡

·LZO压缩

·HDFS多目录存储

·多磁盘数据均衡

·LZO压缩

·Hadoop基准测试

Zookeeper

·Zookeeper数据输出

·内在原理

·选举机制

·选举机制

·Zookeeper数据输出

·内部原理

·选举机制

·结构stat

·监听器

·分布式安装部署

·API操作

·实际案例

·真实面试题

·启动和停止脚本

HA+新特性

·HDFS-HA集群配置

Hive

·架构原理Hive

·安装与使用

·远程连接

·常用命令和基本数据类型

·DML数据操作

>

·查询语句

·连接和排序

·捆绑和函数

·压缩和存储

·企业级调优

·实际案例

·问题真实面试

Flume

·Flume架构

·Agent内部原理

·交易

·安装与用法

·实际案例

·自定义资源

·自定义种子

·Ganglia监控

Kafka

·队列消息传递

·Kafka架构

·集群交付

·命令行操作

·工作流程分析

·分片分配策略

·数据写入流程

·存储策略

·高层API

·低层API

·底层API

·底层API

·拦截器

·监控

·高可靠性持久存储

·数据可靠性和持久性保障

·ISR机制

·Kafka压力测试

·机器数计算

·分区数计算

·启动和停止停止脚本

DataX

·安装

·原理

·一致性数据

·空值处理

·LZO压缩处理

Scala

·Scala基础

·编程函数式

·数据结构

·面向对象编程

·模式匹配

·高阶函数

·特点

·注释和参数类型

·隐式转换

·详细类型

·案例操作

SparkCore

·安装与使用

·RDD概述

·编程模型

·持久化&检查点机制

·DAG

·详细说明运算符

·高级RDD编程

·累加器和广播变量

SparkSQL

·SparkSQL

·数据框架

·数据集

·自定义UDF&UDAF函数

SparkStreaming

·SparkStreaming

·压力机制原理返回

·接收器原理和Live模式

·窗口原理及案例操作

·7x24不间断运行及性能考虑

Spark内核及优化

·详细内核源码讲解

·优化详解

Hbase

·Hbase原理及架构

·读取流程与写入数据

·使用情况API

·与HiveSqoop集成集成

·企业级调优

Presto

·Presto安装部署

·使用Presto实现数据仓库项目的即席查询模块

Ranger2.0

·从Ranger权限管理工具安装部署

Azkaban3.0

·安装与使用任务调度工具Azkaban3.0

·使用Azkaban进行项目任务调度并指定电话和邮件报警

Kylin3.0

·Kylin的安装和使用

·Kylin核心思想

·使用Kylin连接数据源构建模型

Atlas2.0

·工具安装及Atlas使用元数据管理

Zabbix

·Zabbix集群监控工具的安装和使用

DolphinScheduler

·DolphinScheduler任务调度工具的安装和使用

·实现自动调度数据仓库项目任务并配置邮件报警

Superset

·使用SuperSet直观展示数据仓库项目的计算结果

Echarts

·使用Echarts进行详细展示可视化数据仓库项目计算结果

Redis

·重装使用

·五种主要数据类型

·整体配置

·持久化

·事务

·发布订阅

·主从复制

Channel

·使用Canal实时监控MySQL数据变化Collect到实时项目

Flink

·运行时架构

·数据源资源

·WindowAPI

·WaterMark

·状态编程

·复杂的CEP多事件处理

FlinkSQL

·FlinkSQL与TableAPI详细解读

Flink核心

·源码解释Flink内核

·经典面试题详解

Git&GitHub

·安装配置

·构建本地库

·基本操作

·工作流程

·集中式

ClickHouse

·ClickHouse的安装和使用

·读写机制

·数据类型

·执行引擎

DataV

·利用DataV实时可视化展示项目请求计算结果

sugar

·结合Springgboot连接百度糖实现屏幕数据可视化大

Maxwell

·使用Maxwell实时监控MySQL数据变化,并将其聚合到实时项目

ElasticSearch

·ElasticSearch索引基本操作及案例操作

Kibana

·通过Kibana配置可视化分析

Springboot

·使用Springboot在程序的视觉界面之间开发

sparksql缓存表能做广播变量吗

共享变量通常,当您将函数传递给Spark操作(例如map、reduce)时,它将在远程集群节点上执行,并且它将使用函数中所有变量的副本。
这些变量被复制到所有机器,而远程机器上尚未更新的变量则被传回驱动程序。
在任务之间使用通用的读写共享变量效率很低。
尽管如此,Spark提供了两种有限类型的共享变量:广播变量和累加器。
广播变量广播变量允许程序员在每台机器上缓存只读变量,而无需在任务之间传递变量。
广播变量可用于有效地为每个节点提供大型输入数据集的副本。
Spark还尝试使用高效的广播算法来分发变量以减少通信开销。
Spark的操作作为一系列由分布式洗牌操作分隔的步骤来执行。
Spark在每一步自动广播每个任务所需的公共数据。
该广播数据在运行任务之前被串行缓存和反序列化。
这意味着当我们需要在多个阶段的任务之间使用相同的数据,或者以反序列化形式缓存数据很重要时,显式创建广播变量非常有用。
广播变量是通过对变量v调用SparkContext.broadcast(v)创建的。
广播变量是v的包装器,可以通过value方法访问该变量。
例如:scala>valbroadcastVar=sc.broadcast(Array(1,2,3))broadcastVar:org.apache.spark.broadcast.Broadcast[Array[Int]]=Broadcast(0)scala>broadcastVar.valueres0:Array[Int]=Array(1,2,3)创建广播变量后,应该在集群上的所有函数中使用它,而不是使用v。
这样v就不会在节点之间传输多次。
另外,为了保证所有节点得到相同的变量,对象v在广播后不应该被修改。
累加器累加器是仅由关联操作累加的变量,因此可以有效地支持并行性。
它可用于实现计数器和求和。
Spark本身仅支持数字累加器,程序员可以添加对新类型的支持。
如果您在创建累加器时指定了名称,则可以在SparkUI中看到它。
这有助于理解每个执行阶段的流程。
(Python尚不支持)累加器是通过对已初始化的变量v调用SparkContext.accumulator(v)来创建的。
集群上运行的任务可以通过add或“+=”方法对累加器进行累加操作。
然而,他们无法读取其价值。
只有驱动程序可以通过累加器的value方法读取其值。
以下代码演示如何将数组中的所有元素添加到累加器:scala>valaccum=sc.accumulator(0,"MyAccumulator")accum:spark.Accumulator[Int]=0scala>sc.parallelize(Array(1,2,3,4)).foreach(x=>累加+=x)...10/09/2918:41:08INFOSparkContext:Tasksfinishedin0.317106sscala>accum.valueres2:Int=10虽然上面的示例使用内置支持的累加器类型Int,但开发人员也可以继承AccumulatorParam类来创建自己的累加器类型。
自己的累加器类型。
AccumulatorParam接口有两个方法:零方法为您的类型提供值0。
addInPlace方法添加两个值。
假设我们有一个代表数学向量的Vector类。
我们可以如下实现:objectVectorAccumulatorParamextendsAccumulatorParam[Vector]{defzero(initialValue:Vector):Vector={Vector.zeros(initialValue.size)}defaddInPlace(v1:Vector,v2:Vector):Vector={v1+=v2}}//然后,createanAccumulatorofthistype:valvecAccum=sc.accumulator(newVector(...))(VectorAccumulatorParam)在Scala中,Spark提供了更通用的累加接口来累加数据,虽然结果的类型不同从累积数据类型可能不一致(例如,通过将元素收集在一起创建列表)。
同时使用SparkContext..accumulableCollection方法来累积常见的Scala集合类型。
累加器仅在动作操作内更新。
Spark保证每个任务对累加器的更新操作只执行一次,即即使任务重启也不会更新。
在转换操作过程中,用户必须注意:如果重新执行任务和作业阶段,每个任务对累加器的更新操作可能会执行多次。
累加器不会改变Spark的惰性求值模型。
如果它们是通过RDD上的操作更新的,则仅当RDD作为操作操作的结果进行评估时,它们的值才会更新。
因此,当执行诸如map之类的延迟转换操作时,无法保证实际执行对累加器值的更新。
下面的代码片段演示了这个功能:valaccum=sc.accumulator(0)data.map{x=>accum+=x;f(x)}//这里,accum的值仍然是0,因为没有任何action操作。
地图实际上是计算出来的。

SparkSQL编程全步骤

1.下载SparkSQL

访问Apache官网,选择对应的Spark版本和Hadoop版本,点击下载。
下载完成后,获取文件名,例如例如spark-3.1.2-bin-hadoop3.2.tgz。

2.安装SparkSQL

解压下载的文件。
编辑/etc/profile文件并添加SparkSQL环境变量。
确保代码位于文件末尾并运行命令以启用环境变量。

3.编码准备

检查Java、Maven和Python版本以确保兼容性。
在项目文件夹中创建所需的目录结构,例如例如,sparkexamples/project1/src/main/java,创建pom.xml和MyApp.java文件并保存Weather.csv数据文件。

4.编写代码

使用vi等文本编辑器,修改pom.xml和MyApp.java文件,编写SparkSQL代码。
确保所有文件和数据路径正确。

5.编译与执行

运行构建命令,例如例如使用$mvnclean清除编译结果,然后使用$mvnpackage重新编译它。
程序执行后,生成的CSV文件将保存在结果java目录中。

6.Python编程

ApacheArrow在SparkSQL中提供了一种高效的数据交换格式。
在处理Pandas和Numpy数据时,SparkDataFrame在概念上与PandasDataFrame一致。
确保Spark配置中的spark.sql.execution.arrow.pyspark.enabled设置为true。

安装PyArrow。
通常,当您使用pip安装PySpark时,PyArrow会自动安装为SQL模块的依赖项。
将Weather.csv文件放在当前目录中并创建MyApp.py文件。
在Python文件中编写SparkSQL代码,直接执行$spark-submitMyApp.py运行程序。
生成的CSV文件保存在resultspy目录中。

最后通过对比resultjava和resultpy目录下的文件,可以观察SparkSQL程序和Python版本的执行结果。