Mongodb 如何计算作为Mongo文档发送的数据帧行大小作为Mongo Spark Connector的输入
我想将dataframe作为spark mongo连接器的输入进行传递。但是我想消除大于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
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($“行大小”