我正在使用Azure Databricks通过使用SparkR和gapplyCollect()
.
项目概况
- 我有10000 多个类似的数据源,每天生成大量交易信息进行分析;
- 我有一个R 函数,可以一次分析1 个数据源的所有信息,为我提供有关该特定数据源的一些有价值的见解;
- 因此,每天我需要执行我的 R 函数 10000 多次来分析我的所有数据。
代码逻辑
- 读取所有数据(来自关系数据库)作为
SparkDataframe
groupBy()
SparkDataframe
基于我的数据源列(数据按数据源列均匀分布)- 使用
gapplyCollect()
上GroupedData
一步的结果,在每个数据分区上应用我的 R 函数。- 每次执行的结果是一个
DataFrame
带有几行的小 R ( dim == (5,5) )。 - 所有结果都通过
gapplyCollect()
执行连接,生成一个小的 RDataFrame
(<100k 数字行)来合并所有结果。
- 每次执行的结果是一个
- 将结果保存在我的DBFS上。
我的问题
在我的开发环境中,我正在对 250 个数据源的分析进行一些并行化的实验,为此我使用了 4 个小型工作人员(VM 类型:Standard_F4s)。
gapplyCollect()
正在将我的 R 函数发送给工作人员,但是......是否可以自定义每个工作人员要执行的最大活动任务数?默认情况下,我看到Databricks允许每个工作人员执行 5 个活动任务。
- 例如:如何允许每个工作人员并行执行 8 个任务?
spark-submit
适合这个任务吗?
我从未使用过spark-submit
,也没有找到在Azure Databricks上使用它的好文档。
我将使用每日计划的作业将此代码投入生产。在工作中,我可以使用例如该
spark-submit
功能来更改--executor-cores
选项吗?如果是,我如何保证我
forecast
在所有工作驱动程序 + 工作人员中都安装了 CRAN 库,因为Azure Databricks不允许我在使用spark-submit
?