elasticsearch,apache-spark-sql,spark-streaming,Mongodb,Apache Spark,elasticsearch,Apache Spark Sql,Spark Streaming" /> elasticsearch,apache-spark-sql,spark-streaming,Mongodb,Apache Spark,elasticsearch,Apache Spark Sql,Spark Streaming" />

Mongodb 需要10亿数据的spark分析帮助吗

Mongodb 需要10亿数据的spark分析帮助吗,mongodb,apache-spark,elasticsearch,apache-spark-sql,spark-streaming,Mongodb,Apache Spark,elasticsearch,Apache Spark Sql,Spark Streaming,我需要使用spark sql分析10亿(100GB+)数据,并将其持久化到mongo db或elastic search 源代码是RDBMS。我们将从RDBMS(Sql Server或oracle)中逐列获取10亿(100GB+)数据(一次只分析一列) 在分析过程中,我将对特定列执行GROUPBY,对GROUPBY输出应用一些udf转换,并将其持久化到目标数据库(Mongo DB或弹性搜索) 已配置带有3个从属服务器的spark群集: Spark版本:2.1.0 集群类型:独立 主配置: 操作系

我需要使用spark sql分析10亿(100GB+)数据,并将其持久化到mongo db或elastic search

源代码是RDBMS。我们将从RDBMS(Sql Server或oracle)中逐列获取10亿(100GB+)数据(一次只分析一列)

在分析过程中,我将对特定列执行GROUPBY,对GROUPBY输出应用一些udf转换,并将其持久化到目标数据库(Mongo DB或弹性搜索)

已配置带有3个从属服务器的spark群集:
Spark版本:2.1.0
集群类型:独立

主配置:
操作系统:Cent OS 7
处理器类型:i5 核心:4个
内存:16 GB

从机配置:
操作系统:Cent OS 7
处理器类型:i5
核心:4个
内存:16 GB

spark提交命令:

spark提交--class com.poc.Client--masterspark://datanode1:7077 --num executors 9——executor cores 3——executor内存9G“AnalysisPOC-1.0.jar”

从spark阅读
Dataset columnDataset=sparkSession.read().format(“jdbc”).options(sourceDbProps).load().groupBy(“someColumnName”).count().persist(StorageLevel.MEMORY_AND_DISK())

写入mongodb
MongoSpark.write(columnDataset).options(props.mode)(SaveMode.Append.save()

在提交10亿数据之前,我对代码进行了如下测试:
案例1:
栏目:7个
数据集:500k
状态:成功
火花作业时间:
Mongo DB:6分钟15秒
弹性搜索:8分钟25秒

案例2:
栏目:7个
数据集:100万
状态:成功
火花作业时间:
Mongo DB:13分钟50秒
弹性搜索:20分钟30秒

案例3:
栏目:7个
数据集:1000万
状态:成功
火花作业时间:
Mongo DB:50分钟10秒
弹性搜索:1小时5分钟4秒

案例4:
栏目:7个
数据集:1亿
状态:失败
火花作业时间:
Mongo DB:失败
弹性搜索:失败
异常:线程“main”org.apache.spark.sparkeException中的异常:作业因阶段失败而中止:阶段0.0中的任务0失败了4次,最近的失败:阶段0.0中的任务0.3丢失(TID 3,192.168.1.70,executor 0):java.lang.IllegalStateException:没有新记录的空间

我需要帮助以有效的方式调整spark工作,我的工作必须处理10亿个数据


我需要帮助在没有分区键的情况下尽快获取rdbms数据。因为我一次只分析一列。

我认为您的磁盘空间用完了:`没有新记录的空间',如果您尝试从RDBMS加载1列10亿行,而不使用分区键,那么数据将缓慢加载,并且只有一个执行器,在这种情况下,本地系统的一个核心将尝试加载所有数据,这似乎很难,就像本文中提到的-你好,日罗,你能建议我如何克服没有新记录的空间吗
conf.set("spark.shuffle.compress", "false");
conf.set("spark.broadcast.compress", "true");
conf.set("spark.sql.inMemoryColumnarStorage.compressed", "true");
conf.set("spark.sql.inMemoryColumnarStorage.batchSize", "10000");
conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer");
conf.set("spark.kryo.referenceTracking", "false");
conf.set("spark.kryoserializer.buffer", "4000");
conf.set("spark.io.compression.codec", "org.apache.spark.io.SnappyCompressionCodec");