如何使用map进行分布式操作?

时间:2018-06-04 07:25:04

标签: apache-spark

是否可以在 <StructLayout(LayoutKind.Sequential, Pack:=1)> Public Structure SGDeviceInfoParam Private Const SGDEV_SN_LEN As Integer = 15 ' Device Serial Number Length Public DeviceID As UInt32 ' Device Serial Number, Length of SN = 15 Public ComPort As UInt32 ' Parallel device=>PP address, USB device=>USB(0x3BC+1) Public ComSpeed As UInt32 ' Parallel device=>PP mode, USB device=>0 Public ImageWidth As UInt32 ' Image Width Public ImageHeight As UInt32 ' Image Height Public Contrast As UInt32 ' 0 ~ 100 Public Brightness As UInt32 ' 0 ~ 100 Public Gain As UInt32 ' Dependent on each device Public ImageDPI As UInt32 ' DPI Public FWVersion As UInt32 End Structure 内执行分布式操作?

我解释说:

  • 我读了JSON,并通过Spark
  • 对其进行了并行化
  • 我执行了一个map操作,在其“call”方法中,我执行了一个CURL
  • 我得到了CURL的结果,并根据结果处理了RDD

我知道这有效,但我想知道CURL是由驱动程序还是执行程序执行?

1 个答案:

答案 0 :(得分:2)

编辑完成后,问题就出现了,答案是肯定的。

  

是否可以在RDD.map内执行分布式操作?

我还在评论中写道&#34;除非Spark SQL的数据集API无法满足您的要求,否则您应远离RDD API。&#34;

所以问题中的以下项目:

  

我读了一个JSON,然后通过Spark

对它进行并行化

应该如下:

  

我在Spark SQL中读了一个JSON

我认为我的解释仍然存在(无论API,Spark SQL的数据集与Spark Core的RDD如何)。

  

是否可以在Map中执行分布式操作?

Dataset.map运营商内?它已经是一个分布式计算(因为Spark SQL中的大多数结构化查询都是&#34;描述&#34;使用数据集API),map将继续进行。

  

我知道这有效,但我想知道CURL是由驱动程序还是执行程序执行?

对于map,它将在Spark执行器上。

请注意,如果您提供自己的map运算符(通过隐式转换),则不必这样。

执行查询的位置取决于正在使用的逻辑运算符的实现,因为某些逻辑运算符在驱动程序上执行 - 请参阅CommandRunnableCommand逻辑运算符和ExecutedCommandExec物理运算符。< / p>

Spark SQL带有许多优化,可以改变查询的工作方式(与Spark Core的RDD相比)。这是坚持使用Spark SQL的众多理由之一(尽可能避免使用Spark Core&#39的RDD API)。