Apache spark 在分布式文件上以独立模式使用Spark Shell(CLI)

Apache spark 在分布式文件上以独立模式使用Spark Shell(CLI),apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,我在带有3台机器的集群上以独立模式使用Spark 1.3.1(不涉及纱线/HDF-仅Spark)。我有一个主节点(没有工作节点)和两个独立的工作节点。 集群启动正常,我只是尝试通过spark shell运行一些简单的示例来测试我的安装(CLI-我在主计算机上启动):我只需在主节点的localfs上放置一个文件(工作人员没有此文件的副本),然后运行: $SPARKHOME/bin/spark-shell ... scala> val f = sc.textFile("file:///PA

我在带有3台机器的集群上以独立模式使用Spark 1.3.1(不涉及纱线/HDF-仅Spark)。我有一个主节点(没有工作节点)和两个独立的工作节点。 集群启动正常,我只是尝试通过spark shell运行一些简单的示例来测试我的安装(CLI-我在主计算机上启动):我只需在主节点的localfs上放置一个文件(工作人员没有此文件的副本),然后运行:

$SPARKHOME/bin/spark-shell

...

scala> val f = sc.textFile("file:///PATH/TO/LOCAL/FILE/ON/MASTER/FS/file.txt")

scala> f.count() 
它将正确返回单词计数结果

我的问题是:

1) 这与(使用外部数据集时)所说的相矛盾,如:

如果使用本地文件系统上的路径,该文件也必须在工作节点上的同一路径上可访问。请将该文件复制到所有工作节点,或使用网络安装的共享文件系统

我没有使用NFS,也没有将文件复制到workers,那么它是如何工作的呢?(这是因为spark shell没有在集群上真正启动作业,而是在本地进行计算(这很奇怪,因为我没有在节点上运行工作程序,而是在上启动了shell)


2) 如果我想通过Spark的thrift server(如beeline或hiveserver2在Hive中的使用方式)对一些大型数据文件(不适合一台机器)运行SQL脚本(在独立模式下),我是否需要将这些文件放在NFS上,以便每个工作人员都可以看到整个文件,或者我是否可以从这些文件中创建块,然后将每个较小的块(可以放在一台机器上)放在每个辅助程序上,然后使用多个路径(逗号分隔)将它们全部传递给提交的查询?

问题是您正在本地运行spark shell。运行spark shell的默认设置为
--master local[*]
,它将在尽可能多的内核上本地运行代码。如果您想针对您的工人运行,那么您需要使用
--master
参数运行,该参数指定了master的入口点。如果您想查看spark shell可能使用的选项,只需键入
spark shell--help


至于是否需要将文件放在每台服务器上,简短的回答是“是”。类似HDFS的东西将在节点之间将其拆分,管理器将根据需要处理抓取。我对NFS不太熟悉,如果它有这个功能,那么您使用了什么命令来运行shell@JustinPihony我使用$SPARK_HOME/bin/SPARK shell来启动shell cli你有没有一个例子,它在jupyter笔记本上应该是什么样子的?没有,对不起-你可能想打开一个新问题