- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为加载文本文件只能从工作人员/集群内完成(您只需要确保所有工作人员都可以访问相同的路径,或者通过在所有节点上提供该文本文件,或者通过使用一些共享的文件夹映射到同一路径)
例如spark-submit
/spark-shell
可以从任何地方启动,并连接到 Spark Master 以及启动 spark-submit
的机器/spark-shell
(这也是我们的驱动程序运行的地方,除非您处于“集群”部署模式)与集群无关。因此,任何数据加载都应该仅从工作人员完成,而不是在驱动程序机器上完成,对吧?例如sc.textFile("file:///somePath")
不应该导致 Spark 在 driver 机器上查找文件(同样,驱动程序位于集群外部,例如在“客户端”部署模式/独立模式下),对吗?
嗯,我也是这么想的...
我们的 Actor 阵容
第一幕 - 希望
当我从机器 B 启动 Spark-shell 到 B 上的 Spark Master 时,我得到以下信息:
scala> sc.master
res3: String = spark://machinB:7077
scala> sc.textFile("/tmp/data/myfile.csv").count()
res4: Long = 976
第二幕 - 冲突
但是当我从机器 A 启动 Spark-shell 并指向 B 上的 Spark Master 时,我得到:
scala> sc.master
res2: String = spark://machineB:7077
scala> sc.textFile("/tmp/data/myfile.csv").count()
org.apache.hadoop.mapred.InvalidInputException: Input path does not exist: file:/tmp/data/myfile.csv
事实上/tmp/data/myfile.csv
在机器A上不存在,但是机器A不在集群上,它只是驱动程序运行的地方
第三幕 - 惊奇
更奇怪的是,如果我让这个文件在机器 A 上可用,它就不会再抛出这个错误了。 (相反,它创建了一个作业,但没有任务,并且只是由于超时而失败,这是另一个值得单独问题的问题)
Spark 的行为方式中是否存在我所遗漏的内容?我认为 Spark shell 连接到远程时与您正在运行的机器无关。那么为什么当我将该文件放到机器 A 上时错误就会停止呢?这意味着 sc.textFile 的位置包括 spark-shell 或 spark-submit 启动的位置(在我的情况下也是驱动程序运行的位置)?这对我来说毫无意义。但同样,我乐于学习新事物。
尾声
tl;dr - sc.textFile("file:/somePath") 从机器 A 上的驱动程序运行到机器 B、C、D 上的集群...(驱动程序不是集群的一部分)
它似乎也在驱动程序上寻找路径file:/somePath,这是真的吗(或者只是我)?这是已知的吗?是这样设计的吗?
我有一种感觉,这是我工作场所网络特有的一些奇怪的网络/VPN 拓扑问题,但这仍然是发生在我身上的情况,我完全困惑这是否只是我的问题还是已知的行为。 (或者我只是不明白 Spark 是如何工作的,这始终是一个选项)
最佳答案
因此,答案的真正简短版本是,如果您引用“file://...”,则应该可以在集群中的所有节点(包括 dirver 程序)上访问它。有时,一些工作会发生在 worker 身上。一般来说,解决这个问题的方法就是不使用本地文件,而是使用 S3、HDFS 或其他网络文件系统之类的东西。有 sc.addFile
方法,可用于将文件从驱动程序分发到所有其他节点(然后使用 SparkFiles.get
来解析下载)位置)。
关于apache-spark - Spark 在哪里查找文本文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464894/
目前正在学习 Spark 的类(class)并了解到执行者的定义: Each executor will hold a chunk of the data to be processed. Thisc
阅读了有关 http://spark.apache.org/docs/0.8.0/cluster-overview.html 的一些文档后,我有一些问题想要澄清。 以 Spark 为例: JavaSp
Spark核心中的调度器与以下Spark Stack(来自Learning Spark:Lightning-Fast Big Data Analysis一书)中的Standalone Schedule
我想在 spark-submit 或 start 处设置 spark.eventLog.enabled 和 spark.eventLog.dir -all level -- 不要求在 scala/ja
我有来自 SQL Server 的数据,需要在 Apache Spark (Databricks) 中进行操作。 在 SQL Server 中,此表的三个键列使用区分大小写的 COLLATION 选项
所有这些有什么区别和用途? spark.local.ip spark.driver.host spark.driver.bind地址 spark.driver.hostname 如何将机器修复为 Sp
我有大约 10 个 Spark 作业,每个作业都会进行一些转换并将数据加载到数据库中。必须为每个作业单独打开和关闭 Spark session ,每次初始化都会耗费时间。 是否可以只创建一次 Spar
/Downloads/spark-3.0.1-bin-hadoop2.7/bin$ ./spark-shell 20/09/23 10:58:45 WARN Utils: Your hostname,
我是 Spark 的完全新手,并且刚刚开始对此进行更多探索。我选择了更长的路径,不使用任何 CDH 发行版安装 hadoop,并且我从 Apache 网站安装了 Hadoop 并自己设置配置文件以了解
TL; 博士 Spark UI 显示的内核和内存数量与我在使用 spark-submit 时要求的数量不同 更多细节: 我在独立模式下运行 Spark 1.6。 当我运行 spark-submit 时
spark-submit 上的文档说明如下: The spark-submit script in Spark’s bin directory is used to launch applicatio
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6 个月前关闭。 Improve
我想了解接收器如何在 Spark Streaming 中工作。根据我的理解,将有一个接收器任务在执行器中运行,用于收集数据并保存为 RDD。当调用 start() 时,接收器开始读取。需要澄清以下内容
有没有办法在不同线程中使用相同的 spark 上下文并行运行多个 spark 作业? 我尝试使用 Vertx 3,但看起来每个作业都在排队并按顺序启动。 如何让它在相同的 spark 上下文中同时运行
我们有一个 Spark 流应用程序,这是一项长期运行的任务。事件日志指向 hdfs 位置 hdfs://spark-history,当我们开始流式传输应用程序时正在其中创建 application_X
我们正在尝试找到一种加载 Spark (2.x) ML 训练模型的方法,以便根据请求(通过 REST 接口(interface))我们可以查询它并获得预测,例如http://predictor.com
Spark newb 问题:我在 spark-sql 中进行完全相同的 Spark SQL 查询并在 spark-shell . spark-shell版本大约需要 10 秒,而 spark-sql版
我正在使用 Spark 流。根据 Spark 编程指南(参见 http://spark.apache.org/docs/latest/programming-guide.html#accumulato
我正在使用 CDH 5.2。我可以使用 spark-shell 运行命令。 如何运行包含spark命令的文件(file.spark)。 有没有办法在不使用 sbt 的情况下在 CDH 5.2 中运行/
我使用 Elasticsearch 已经有一段时间了,但使用 Cassandra 的经验很少。 现在,我有一个项目想要使用 Spark 来处理数据,但我需要决定是否应该使用 Cassandra 还是
我是一名优秀的程序员,十分优秀!