星火网UI"take at SerDeUtil.scala:201"解读
Spark Web UI "take at SerDeUtil.scala:201" interpretation
我正在创建一个 Spark RDD,方法是使用 python 中的 elasticsearch-hadoop 连接器从 Elasticsearch 加载数据(导入 pyspark),如:
es_cluster_read_conf = {
"es.nodes" : "XXX",
"es.port" : "XXX",
"es.resource" : "XXX"
}
es_cluster_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf=es_cluster_read_conf)
现在,如果我的文件中只有这 2 个命令并且 运行 它,在 Spark Web UI 上的应用程序详细信息中,我在工作中看到的是:take at SerDeUtil.scala:201
我现在有两个问题:
1) 我的印象是,在 Spark 中,RDD 是延迟计算的,即,如果不应用任何操作,就不会启动任何作业。在上述情况下,我没有应用任何操作,但我在网络上看到一份工作 运行 UI.
2) 如果这是一项工作,那么这个"take"
操作究竟意味着什么?这是否意味着数据实际上是从我的 ElasticSearch 节点加载并传递给 Spark 节点的?我理解一些作业被列为收集、计数等,因为这些是 Spark 中的有效操作。然而,即使在进行了广泛的研究之后,我仍然无法弄清楚这个 take
操作的语义。
I was under the impression that in Spark RDDs are computed lazily i.e, if no action is applied, there would not be any job launched. I
这或多或少是正确的,尽管当操作可以由次要任务触发时存在一些例外情况,例如创建分区程序、JVM 和来宾语言之间的数据转换。当您使用高级别 Dataset
API 和 Dataframes
.
时,情况会更加复杂
If this is a job, what does this "take" operation actually mean? Does this mean that the data is actually loaded from my ElasticSearch node and passed to Spark node?
这是一项工作,一些数据实际上是从源中获取的。需要确定键值对的序列化器。
我正在创建一个 Spark RDD,方法是使用 python 中的 elasticsearch-hadoop 连接器从 Elasticsearch 加载数据(导入 pyspark),如:
es_cluster_read_conf = {
"es.nodes" : "XXX",
"es.port" : "XXX",
"es.resource" : "XXX"
}
es_cluster_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf=es_cluster_read_conf)
现在,如果我的文件中只有这 2 个命令并且 运行 它,在 Spark Web UI 上的应用程序详细信息中,我在工作中看到的是:take at SerDeUtil.scala:201
我现在有两个问题:
1) 我的印象是,在 Spark 中,RDD 是延迟计算的,即,如果不应用任何操作,就不会启动任何作业。在上述情况下,我没有应用任何操作,但我在网络上看到一份工作 运行 UI.
2) 如果这是一项工作,那么这个"take"
操作究竟意味着什么?这是否意味着数据实际上是从我的 ElasticSearch 节点加载并传递给 Spark 节点的?我理解一些作业被列为收集、计数等,因为这些是 Spark 中的有效操作。然而,即使在进行了广泛的研究之后,我仍然无法弄清楚这个 take
操作的语义。
I was under the impression that in Spark RDDs are computed lazily i.e, if no action is applied, there would not be any job launched. I
这或多或少是正确的,尽管当操作可以由次要任务触发时存在一些例外情况,例如创建分区程序、JVM 和来宾语言之间的数据转换。当您使用高级别 Dataset
API 和 Dataframes
.
If this is a job, what does this "take" operation actually mean? Does this mean that the data is actually loaded from my ElasticSearch node and passed to Spark node?
这是一项工作,一些数据实际上是从源中获取的。需要确定键值对的序列化器。