从salesforce提取数据时仅执行1个Map任务

w1e3prcc  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(480)

datameer(rapidetl/bi工具,位于hadoop之上)中的几个任务是从salesforce对象中读取数据。最大的提取是1.4 gb(任务对象),最小的提取是96 mb(帐户对象)。datameer使用基于restapi的连接器,向连接器提供soql查询并相应地获取记录(https://documentation.datameer.com/documentation/display/das60/salesforce).
datameer编译作业并将执行交给执行框架(tez)。此外,没有特定于作业的配置。
所有saleforce提取作业都与1个map任务一起运行。
但是,
datameer中还有其他提取作业,它们从sftp服务器上的平面文件(50-200mb)中读取数据,并在3-5个map任务之间使用。
关于soql:https://developer.salesforce.com/docs/atlas.en-us.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_changing_batch_size.htm soql每批最多提取2000条记录
我的问题是:
考虑到平面文件中的数据与多个Map任务一起运行,该问题是否对应于soql批处理大小,即每个请求只提取2000条记录,因此只分配1个Map器。
mr程序在处理salesforce之类的源代码或基于云的源代码时如何确定输入提取的总大小
数据库。
环境信息:hortonwork 2.7.1

Cores Per Data node=8

RAM per Data node=64GB

No of datanodes = 6

Block Size : 128 MB

Input Split info:

mapreduce.input.fileinputformat.split.maxsize=5368709120 (5 GB)

mapreduce.input.fileinputformat.split.minsize=16777216 (16 MB)

Execution Framework: Tez

Memory Sizes: <property> <name>mapreduce.map.memory.mb</name> <value>1536</value> </property><property> <name>mapreduce.reduce.memory.mb</name> <value>2048</value> </property><property> <name>mapreduce.map.java.opts</name> <value>-Xmx1228m</value> </property><property> <name>mapreduce.reduce.java.opts</name> <value>-Xmx1638m</value> </property>

<property> <name>yarn.app.mapreduce.am.resource.mb</name> <value>1024</value> </property><property> <name>yarn.app.mapreduce.am.command-opts</name> <value>-Xmx819m -Dhdp.version=${hdp.version}</value> </property>

Compression is enabled:

<property> <name>io.compression.codecs</name> <value>org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.SnappyCodec</value> </property> mapreduce.output.fileoutputformat.compress=true

mapreduce.output.fileoutputformat.compress.type=BLOCK

mapreduce.map.output.compress=true

mapred.map.output.compression.type=BLOCK
zaqlnxep

zaqlnxep1#

datameer的支持人员提出了这个问题,他们提供了以下答复。
根本原因分析:
“使用的Map器只有一个限制。它主要用于不能从创建多个剥离中获益的web服务。这可能是因为服务不支持拆分,或者数据太小,作业无法从拆分中受益。”
背景:
datameer使用salesforce连接器,intern使用restapi调用,一次请求最多可以获取2000条记录。restapi调用是同步的,它们返回结果的时间限制为5秒。

相关问题