我想这将是一个简单的任务。
我已经让Python Kafka制片人经营了 卡夫卡当时在多克 这个话题存在,我可以成功地发出一个信息。
接下来的一步听起来很直截了当:我只想让Spark从卡夫卡的话题读出JSON的讯息。
相反,我遇到了一个又一个错误。
一开始,它看起来像一个问题: Spark不能读出Kafka.
这不是一个问题。
它变成一系列不同层面的失败: 这一经验的有用部分并非一成不变。
它正在学习如何分离层 并停止把每一个错误当作一个问题 在我的Python代码。
这是完全调试路径 。
我当时的建筑 这是财务数据工程项目的一部分。
项目的批量方面已经大致是这样的:我想为新到来的财务事件增加一个流线延伸。
第一个版本,我故意保持简单: 出品人发送模拟金融事件:卡夫卡成功接受信息.
我甚至可以读它与卡夫卡的操纵台消费者。
所以卡夫卡自己也在工作。
随后斯派克进入了画面.
失败 #1: PySpark 已工作,但我是否安装了 PySpark : 之后我安装了 Java 17 并验证了它: 在重新打开我的终端后, Java 可以使用.
我直接通过Python测试了Spark:Spark开始并返回了一个版本.
这告诉我一些重要的事情: 基本上工作。
于是我继续工作 并试图经营 溪流工作 被观察到的错误:我的第一个反应是,PySpark可能没有正确安装.
但这与证据不符。
Python 已经导入了 PySpark 并创建成功 。
所以这不是简单的: PySpark 被打破了。
问题在于Windows发射器,以及它是如何发现Pip-instained Spark环境的.
这种区别很重要。
我并没有花时间改变应用程序代码,而是暂时绕过发射装置,尝试直接运行Python脚本: 这让我超越了第一层。
并立即曝光了第二个.
失败 #2: Spark不知道什么是诱因 我的流代码包含类似: 被观察到的错误: 为什么这个错误很重要 : 这是一个需要理解的重要错误。
这并不意味着: Spark试图连接到Kafka,而Kafka拒绝了连接.
谓先入先入.
Spark根本没有卡夫卡数据源执行。
换句话说,单靠Python包是不够的.
Spark的Kafka集成通过JVM-侧接器JARs实现.
对于结构流,我需要:我最初使用的依赖性是:部分也很重要。
它指的是软件包所构建的斯卡拉二进制版本.
这是Python, Spark, Scala, 和JVM之间的关系变得更加具体的时刻之一。
我在写Python,但下面的堆叠看起来更像: 在添加了连接器后,Spark成功地解决并下载了Kafka包及其依赖性.
这看起来很有希望。
然后Spark又失败了.
失败 第3: Kafka Connector 工作了——Windows Did Not once the Kafka JARs可用,我期望应用程序启动.
观察出错误:接着是:最终:我如何诊断出:堆积痕是关键.
它展示了诸如: 并最终浮出水面的Python等的呼声.
这是一个很好的提醒,不要停止在最高一级例外的阅读。
如果我只看了一眼:我可能认为我有一个Python对Java的沟通问题.
但真正的原因在堆栈追踪中更深: Spark本身不是Hadoop,而Spark使用Hadoop库进行一些与文件系统相关的操作.
在Windows上,一些Hadoop公用设施期望得到Windows特定支持,例如.
决定点:此时我有两个选择。
我可以让Spark在Windows上直接运行 然后开始配置: 或者我可以问一个建筑问题: 我真的应该花时间 制作一个分布式数据处理