Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 如何计算作为Mongo文档发送的数据帧行大小作为Mongo Spark Connector的输入_Mongodb_Apache Spark - Fatal编程技术网

Mongodb 如何计算作为Mongo文档发送的数据帧行大小作为Mongo Spark Connector的输入

Mongodb 如何计算作为Mongo文档发送的数据帧行大小作为Mongo Spark Connector的输入,mongodb,apache-spark,Mongodb,Apache Spark,我想将dataframe作为spark mongo连接器的输入进行传递。但是我想消除大于16mb大小的记录,而不是从Mongo DB获取最大大小异常。有人能帮我过滤行的效率吗 注意:我尝试了SizeEstimator.estimate(行)。我没有为自己工作,因为JVM大小与Mongo文档大小不同 谢谢你的帮助 我找到了一个库,它可以帮助您以字节为单位计算行大小。在项目中导入后,我按以下方式计算行大小: 导入clouseau库、Spark SQL函数及其: import clouseau.Cal

我想将dataframe作为spark mongo连接器的输入进行传递。但是我想消除大于
16mb
大小的记录,而不是从
Mongo DB
获取最大大小异常。有人能帮我过滤行的效率吗

注意:我尝试了
SizeEstimator.estimate(行)
。我没有为自己工作,因为JVM大小与Mongo文档大小不同

谢谢你的帮助

我找到了一个库,它可以帮助您以字节为单位计算行大小。在项目中导入后,我按以下方式计算行大小:

导入clouseau库、Spark SQL函数及其:

import clouseau.Calculate
import org.apache.spark.sql.functions._
import spark.implicits._
创建一个用户定义的函数,以便它接受一个
对象并返回其大小

val calculateRowSize = udf((row: Row) => Calculate.sizeOf(row))
通过传递所有列来应用User Define函数,并删除大小大于16 MB的行

df
  .withColumn("rowSize", calculateRowSize(struct(df.columns.map(col): _*)))
  .filter($"rowSize" <= 16000000)
df
.withColumn(“rowSize”,calculateRowSize(struct(df.columns.map(col):*))
.filter($“行大小”