1.GitHub 上有哪些值得推荐的开源电子书?
2.Github:分享一款开源的跨平台多功能远程控制和监控工具Spark!
3.Spark Core读取ES的分区问题分析
4.向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会
5.WINDOWS 10环境下的Pyspark配置 (基于Anaconda环境,附加不重启情况下环境变量Path修改方式)
GitHub 上有哪些值得推荐的开源电子书?
在GitHub的海洋中,无数的开源电子书犹如璀璨的繁星,为编程爱好者们点亮知识的如何编译chrome源码道路。以下是一些备受推荐的开源资源,涵盖了多种编程语言、框架、技术领域,助你快速提升技能和理解。前端与网络
- Chrome开发者工具指南
- Grunt工具实战
- 移动Web前端入门
- Node.js深入探索
大数据与人工智能
- 大数据挖掘实战
- 推荐系统原理
- 机器学习入门教程
- Apache Spark官方文档
编程艺术与理论
- 内存管理与游戏编程原理
- OpenWrt智能路由器开发教程
语言与框架
- AWK编程基础
- C/C++并发编程指南
- Java EE深入学习
- Dart语言实战
- Python库和框架文档
- PHP开发最佳实践
- Swift编程实践
CSS与HTML
- CSS布局与设计
- Emmet代码编写技巧
- React Native文档
Web开发
- Vue.js官方文档
- Flask快速入门
- React Router教程
移动开发
- iOS开发进阶教程
- Android开发者指南
后端与框架
- Django高级应用开发
- Ruby on Rails核心概念
- Go语言高级编程
科学计算
- R语言数据处理
- Haskell函数式编程实践
- Scala并发编程与设计模式
移动与工具
- Swift编程进阶
- Vim与Emacs定制教程
编程资源与学习笔记
- 《编程珠玑》读书笔记
- 编译原理习题解析
- 专业编程指南和实践案例
自动化测试
- Appium测试框架指南
每一本书籍和教程都是开源社区智慧的结晶,通过这些开源电子书,你可以深入了解技术细节,跨越学习曲线,成为编程领域的佼佼者。探索这些资源,让知识的力量驱动你的编程之旅。
Github:分享一款开源的跨平台多功能远程控制和监控工具Spark!
今天推荐给大家一款开源的跨平台多功能远程控制和监控工具:Spark。 Spark是一款免费、安全、基于网页、跨平台且功能丰富的远程管理工具,能让您通过浏览器随时随地管理设备。 功能包括:设备列表及操作列表、Android收费会员源码登录机器Shell执行命令、桌面远程访问、远程设备的进程管理、远程设备文件管理。 Spark完全基于浏览器UI进行管理,安装对应Agent后,即可通过浏览器远程控制和管理设备。 项目活跃程度可通过Star趋势图查看。 Spark支持Windows、Linux、MacOS三个主流系统,功能基本覆盖三个系统,部分存在差异。 获取项目详情,请访问以下官网链接。 以下是精选的电脑软件分享,覆盖工具、技巧、资源等: 小程序:小明工作助手 办公文档密码破解工具 GitHub访问神器FastGithub 防火墙设置简化工具Firewall App Blocker 卸载工具BCU 磁盘空间分析工具SpaceSniffer Gif动图制作工具ScreenToGif 磁盘空间分析工具WizTree 电脑状态监控工具TrafficMonitor 个人开发工具清单Spark Core读取ES的分区问题分析
撰写本文的初衷是因近期一位星球球友面试时,面试官询问了Spark分析ES数据时,生成的RDD分区数与哪些因素相关。
初步推测,这与分片数有关,但具体关系是什么呢?以下是两种可能的关系:
1).类似于KafkaRDD的分区与kafka topic分区数的关系,一对一。途游网站源码
2).ES支持游标查询,那么是否可以对较大的ES索引分片进行拆分,形成多个RDD分区呢?
下面,我将与大家共同探讨源码,了解具体情况。
1.Spark Core读取ES
ES官网提供了elasticsearch-hadoop插件,对于ES 7.x,hadoop和Spark版本的支持如下:
在此,我使用的ES版本为7.1.1,测试用的Spark版本为2.3.1,没有问题。整合es和spark,导入相关依赖有两种方式:
a,导入整个elasticsearch-hadoop包
b,仅导入spark模块的包
为了方便测试,我在本机启动了一个单节点的ES实例,简单的测试代码如下:
可以看到,Spark Core读取RDD主要有两种形式的API:
a,esRDD。这种返回的是一个tuple2类型的RDD,第一个元素是id,第二个是一个map,包含ES的document元素。
b,esJsonRDD。科学刀网站源码这种返回的也是一个tuple2类型的RDD,第一个元素依然是id,第二个是json字符串。
尽管这两种RDD的类型不同,但它们都是ScalaEsRDD类型。
要分析Spark Core读取ES的并行度,只需分析ScalaEsRDD的getPartitions函数。
2.源码分析
首先,导入源码github.com/elastic/elasticsearch-hadoop这个gradle工程,可以直接导入idea,然后切换到7.x版本。
接下来,找到ScalaEsRDD,发现getPartitions方法是在其父类中实现的,方法内容如下:
esPartitions是一个lazy型的变量:
这种声明的原因是什么呢?
lazy+transient的原因大家可以思考一下。
RestService.findPartitions方法只是创建客户端获取分片等信息,然后调用,分两种情况调用两个方法:
a).findSlicePartitions
这个方法实际上是在5.x及以后的ES版本,同时配置了
之后,才会执行。实际上就是将ES的分片按照指定大小进行拆分,必然要先进行分片大小统计,然后计算出拆分的分区数,最后生成分区信息。具体代码如下:
实际上,c 注入器源码分片就是通过游标方式,对_doc进行排序,然后按照分片计算得到的分区偏移进行数据读取,组装过程是通过SearchRequestBuilder.assemble方法实现的。
这个实际上会浪费一定的性能,如果真的要将ES与Spark结合,建议合理设置分片数。
b).findShardPartitions方法
这个方法没有疑问,一个RDD分区对应于ES index的一个分片。
3.总结
以上就是Spark Core读取ES数据时,分片和RDD分区的对应关系分析。默认情况下,一个ES索引分片对应Spark RDD的一个分区。如果分片数过大,且ES版本在5.x及以上,可以配置参数
进行拆分。
向量化执行引擎框架 Gluten 宣布正式开源,并亮相 Spark 技术峰会
在 年 Databricks Data & AI Summit 会议上,Intel 的陈韦廷和 Kyligence 的张智超共同展示了他们两家公司合作开发的全新开源项目——Gluten。这个项目首次在全球舞台上亮相,旨在为 Apache Spark 提供Native Vectorized Execution的能力,显著提升其执行效率和成本效益。Gluten 的目标是让Apache Spark用户无需迁移,即可享受到高性能的Native Engine性能提升,特别是对那些依赖Spark且无法接受大量运维成本的用户来说,具有显著的价值。
随着硬件技术的进步,CPU计算瓶颈在Spark数据处理中变得越来越明显,而基于JVM的优化难度大。Gluten的出现源于对现有开源Native Engine(如ClickHouse和Velox)优秀向量化执行性能的认可,它们虽能显著加速查询,但与Spark生态的集成性不足。Databricks的Photon项目也展示了类似方向,但Gluten在Photon公开之前已独立启动,两者在优化思路上有相似之处。
Gluten的核心作用是“粘合”Spark与Native Vectorized Engine,如Velox、Clickhouse和Apache Arrow等,通过Plan Conversion & Fallback机制,将Spark查询计划发送给这些引擎执行。项目还需处理内存管理、Columnar Shuffle等关键环节,以确保性能和兼容性。目前,Gluten社区已在TPC-H数据集上验证了Velox和Clickhouse Backend的性能,普遍提高了至少两倍的效率。
未来,Gluten社区将继续优化和扩展项目,鼓励更多开发者关注和参与到项目中来。如果你对Gluten感兴趣,可以在Github上关注我们,7月日的Data & AI Meetup活动将有更多关于Gluten的深入解读。Kyligence,作为Gluten的重要合作伙伴,致力于提供下一代企业级智能多维数据库,通过AI增强的分析能力,助力企业实现数据湖上的高效分析。
WINDOWS 环境下的Pyspark配置 (基于Anaconda环境,附加不重启情况下环境变量Path修改方式)
为了协助妻子完成课程作业,我在Ubuntu和Windows 系统上分别进行了Spark环境配置。Ubuntu环境配置较为简便,网络上有众多教程可供参考,但Windows 系统的配置教程则往往存在疏漏,因此以下是对Windows环境下配置过程的一个总结。
环境配置主要分为以下几个步骤:
1. Python环境:本文使用的是Anaconda环境,因为Anaconda的集成度较高。Anaconda的下载地址为:Anaconda,若外网下载速度较慢,建议使用:清华大学镜像。建议在安装过程中将Python路径添加到Path中。
2. JDK配置:JAVA的配置可以参考Spark在Windows下的环境搭建这篇博客。JAVA的下载地址为:JAVA。需要注意的是,不要安装最新的.0.1版本,否则会导致后续的scala和spark无法正常使用。我目前安装的版本为Java SE Development Kit 8u,后续安装中没有出现其他问题。
3. Spark安装:Spark的安装非常简单,只需下载并解压即可。程序地址为:Spark。需要注意的是,不同版本的Spark对Scala和Hadoop版本有不同要求,具体要求可参考Spark官方文档。
4. Scala安装:从官方网址下载安装包:Scala,所选版本需与Spark对应。我选择的版本为Scala 2.,Windows下的Scala需要选择Scala binaries for windows。
5. Hadoop安装:个人发现,如果不安装Hadoop,运行中会出现各种错误,因此推荐进行配置。软件版本根据Spark版本定,下载地址为:Hadoop。我选择的版本为2.7.1,选择已经编译好的版本。下载完成后,需要添加winutils.exe文件,否则运行中会报错找不到该文件。网上已有编译好的文件,地址为:github_winutils,根据自己的Hadoop版本下载,然后放入Hadoop解压后的bin文件中即可。
环境变量的设置:完成上述安装后,统一进行环境变量配置。注意,以下修改的都是“系统变量”,非用户变量。
1. Python环境:Anaconda安装中已经自动配置。
2. JAVA环境:在系统变量中加入JAVA_HOME,路径设置为:C:\Program Files\Java\jdk1.8.0_。在系统变量中加入CLASSPATH,路径设置为:。不添加这一步,后续使用中会提示需要的库函数未找到。在Path中添加:%JAVA_HOME%\bin。
3. Scala环境:安装中已经自动配置,如果没有,将Scala的bin文件添加入Path中。
4. Hadoop环境:在系统变量中加入HADOOP_HOME,路径设置为解压后的Hadoop路径。在Path中添加:%HADOOP_HOME%\bin。
5. Spark环境:在系统变量中加入SPARK_HOME,路径设置为解压后的Spark路径。在Path中添加:%SPARK_HOME%\bin。
所有环境配置完成后,可以通过重启来激活系统环境变量。这里介绍一种更为简单的操作:首先在Powershell中运行setx PATH "%PATH%;C:\Program Files\Java\jdk1.8.0_\bin"命令,关闭该窗口,在新窗口中运行echo %PATH%命令,系统变量即生效。该操作不改变系统环境变量,省去了关机的时间。
在完成所有环境变量配置后,可以在Powershell中运行spark-shell,显示如下界面:。运行pyspark,显示如下界面:。即表明基本配置成功。
PySpark配置:由于希望在python环境中可以直接通过import pyspark的形式使用,因此,我们通过如下方式来让python“找到”spark。首先,通过pip命令安装findspark,然后在所需程序中执行import findspark即可顺利import pyspark。
最后,祝大家期末愉快!