Detla lake with Java--在spark集群上运行程序

2024-04-30 10:20

本文主要是介绍Detla lake with Java--在spark集群上运行程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

昨天写了第一篇入门,今天看见有人收藏,继续努力学习下去。今天要实现的内容是如何将昨天的HelloDetlaLake 在spark集群上运行,。具体步骤如下

1、安装spark,我使用的是 spark-3.5.1-bin-hadoop3-scala2.13,去官网下载,然后放到电脑任何一个目录,然后添加环境变量,具体如下图:

2、打开一个cmd窗口,运行如下命令:
spark-class org.apache.spark.deploy.master.Master

最终运行结果如下图:

3、打开第二个cmd窗口,运行如下命令:

spark-class org.apache.spark.deploy.worker.Worker spark://localhost:7077

具体运行结果如下图:

此时在浏览器访问 http://localhost:8080/,能够看到有一个worker的spark集群已经成功启动,具体如下图:

4、修改昨天的代码,新建一个DetlaLakeOnSpark,设定代码在 spark://localhost:7077上运行,具体修改master("spark://localhost:7077"),详细代码具体如下:

package detal.lake.java;import org.apache.spark.sql.Dataset;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.SaveMode;
import org.apache.spark.sql.SparkSession;public class DetlaLakeOnSpark {public static void main(String[] args) {SparkSession spark = SparkSession.builder().master("spark://localhost:7077").appName("delta_lake").config("spark.sql.extensions", "io.delta.sql.DeltaSparkSessionExtension").config("spark.sql.catalog.spark_catalog", "org.apache.spark.sql.delta.catalog.DeltaCatalog").getOrCreate();Dataset<Row> data = spark.range(0,5).toDF();data.write().format("delta").mode(SaveMode.Overwrite).save("file:///D:\\bigdata\\detla-lake-with-java\\delta-table-data");Dataset<Row> df = spark.read().format("delta").load("file:///D:\\bigdata\\detla-lake-with-java\\delta-table-data");df.printSchema();df.show();spark.close();}
}

在IDEA上运行以上代码,结果报错,具体如下图:

该问题又花了半天的时间到处找,最终找到一个类似的
https://stackoverflow.com/questions/73982281/delta-lake-error-on-deltatable-forname-in-k8s-cluster-mode-cannot-assign-instanc里面的解决方法就是把Delta lake相关的jar包复制到spark安装目录下面的jar目录里面,于是决定尝试一下。

5、通过IDEA定位到Delta lake 相关jar包所在目录,具体如下图:

6、然后将找到的jar复制到spark安装目录下面的jar目录里面,需要复制2个jar包,分别是:delta-spark_2.13-3.1.0.jar和delta-storage-3.1.0.jar,具体如下图:

复制完后,记得重新运行第2和第3步,重启spark。

7、还是在IDEA运行DetlaLakeOnSpark程序,结果成功运行,具体如下图:

这篇关于Detla lake with Java--在spark集群上运行程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/948605

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd