假设一个以集群模式运行的spark作业以集群模式启动3个执行程序,那么如何获取spark集群中每个执行程序进程的进程ID(PID)?pyspark中有这方面的api吗?
编辑:问题是关于执行器jvm进程ID(PID)而不是执行器ID。那么如何使用 pyspark API 获取执行程序进程 id?
[mapr@impetus-i0057 latest_code_deepak]$ dask-worker 172.26.32.37:8786
distributed.nanny - INFO - Start Nanny at: 'tcp://172.26.32.36:50930'
distributed.diskutils - WARNING - Found stale lock file and directory '/home/mapr/latest_code_deepak/dask-worker-space/worker-PwEseH', purging
distributed.worker - INFO - Start worker at: tcp://172.26.32.36:41694
distributed.worker - INFO - Listening to: tcp://172.26.32.36:41694
distributed.worker - INFO - bokeh at: 172.26.32.36:8789
distributed.worker - INFO - nanny at: 172.26.32.36:50930
distributed.worker - INFO - Waiting to connect to: tcp://172.26.32.37:8786
distributed.worker - INFO - -------------------------------------------------
distributed.worker - INFO - Threads: 8
distributed.worker - INFO - Memory: 33.52 GB …
Run Code Online (Sandbox Code Playgroud) 我在 Windows 10 的命令行提示符下使用“dir”命令。我尝试了以下操作:
c:\my_folder> dir /s /b
Run Code Online (Sandbox Code Playgroud)
但是,上面的命令并没有根据文件的最后更新时间来显示文件。
一个简单的代码片段如下:注释后跟###很重要..
from dask.distributed import Client
### this code-piece will get executed on a dask worker.
def task_to_perform():
print("task in progress.")
## do something here..
print("task is over.!")
### whereas the below code will run on client side,
### assume on a different node than worker
client= Client("127.0.01:8786")
future = client.submit(task_to_perform)
print("task results::", future.result())
Run Code Online (Sandbox Code Playgroud)
因此执行的控制流程将如下所示:dask-client将任务提交给dask-scheduler,调度程序将根据可用的工作程序调用必须提交给任务的工作者.
但是我们在dask中是否有任何机制可以通过它来绕过dask-scheduler在专用/特定工作者上提交我的任务?
我们有一个 spark 作业,它读取一个 csv 文件并应用一系列转换,并将结果写入一个 orc 文件中,
spark 作业分为近 20 个阶段并运行大约一个小时
input csv file size: 10 GB
Run Code Online (Sandbox Code Playgroud)
spark-submit 作业资源配置:
driver-memory= 5 GB
num-executors= 2
executor-core= 3
executor-memory= 20 GB
Run Code Online (Sandbox Code Playgroud)
EC2 实例类型:r5d.xlarge
即32GB Memory
和4 vCPU
附加128 GB EBS volume
EMR 集群包括1 Master Node
和2 Core machines
当我们在上述集群配置上运行 spark 作业时,cpu 利用率仅接近 10-15%
我们的要求是最大限度地提高 EC2 实例对我的 Spark 作业的 CPU 利用率。
感谢您的任何建议!
我在Scala 中有以下函数代码片段:
def sqrtplus1(x: Int) = {
import scala.math.sqrt
sqrt(x) + 1.0
}
Run Code Online (Sandbox Code Playgroud)
我正在对上述函数进行以下 3 次调用:
sqrtplus1(5) // outputs 26
sqrtplus1(6) // outputs 37
sqrtplus1(7) // outputs 50
Run Code Online (Sandbox Code Playgroud)
虽然上述工作正常,
但是,我想知道,scala.math.sqrt
当sqrtplus1
函数被调用3
次数时,包将被导入多少次?谢谢!
我正在尝试编写 Spark scala 应用程序代码的测试用例。所以我打算用于SharedSparkSession
此目的。
我见过其他框架,例如com.holdenkarau,但我正在寻找任何其他替代方案,特别是使用SharedSparkSeesion
.
因此,我尝试从网络上查找使用此示例的示例SharedSparkSession
,但我无法这样做。
如果您有任何示例,请发布。
case class Employee (id: Int, name : String, age : Int)
// Added four emplyees emp1, emp2 emp3, emp4 to the list like below::
val emp1 = Employee(101, "name1", 101)
val emp2 = Employee(102, "name2", 102)
val emp3 = Employee(103, "name3", 103)
val emp4 = Employee(104, "name4", 104)
list = scala.List(emp1, emp2, emp3, emp4)
Run Code Online (Sandbox Code Playgroud)
我想使用 BINARY SEARCH 在列表中按姓名搜索员工,并检索该员工对象。
注意:搜索复杂度应该是 O(logn) 并且我们不应该为此使用任何地图。
就像是
val emp = list.binarysearch("name2")
println("the returned employee's age: ", emp.age) //should print 102
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激。!
apache-spark ×3
dask ×2
scala ×2
amazon-ec2 ×1
amazon-emr ×1
big-o ×1
command-line ×1
dask-delayed ×1
import ×1
powershell ×1
pyspark ×1
scalatest ×1
unit-testing ×1
windows ×1