Apache spark 从google pubsub到spark流媒体的数据摄取速度很慢

Apache spark 从google pubsub到spark流媒体的数据摄取速度很慢,apache-spark,google-bigquery,spark-streaming,google-cloud-pubsub,google-cloud-dataproc,Apache Spark,Google Bigquery,Spark Streaming,Google Cloud Pubsub,Google Cloud Dataproc,我正在使用google cloud Dataproc Spark cluster运行Spark streaming作业,该作业从多个PubSub订阅读取数据并写入BigQuery。PubSub有500万个元素,滑动窗口为2分钟,批/窗口为30秒,我每批仅获得约200000个元素。我希望第一批能拿到全部500万。每个元素的大小约为140字节,采用Avro消息格式 我已经在Dataflow中实现了每秒100万个元素的速度,但我想在Dataproc中实现同样的速度。我尝试了Dataproc的自动缩放选

我正在使用google cloud Dataproc Spark cluster运行Spark streaming作业,该作业从多个PubSub订阅读取数据并写入BigQuery。PubSub有500万个元素,滑动窗口为2分钟,批/窗口为30秒,我每批仅获得约200000个元素。我希望第一批能拿到全部500万。每个元素的大小约为140字节,采用Avro消息格式

我已经在Dataflow中实现了每秒100万个元素的速度,但我想在Dataproc中实现同样的速度。我尝试了Dataproc的自动缩放选项,也尝试了与Dataflow相同的Beam管道代码。如果我增加订阅的数量,那么它可能会给我更多的吞吐量。单次订阅是否可以获得每秒100万个元素的吞吐量

以下是我的Scala代码:

//从多个PubSub读取。
为了{
//方法发送avro字节消息并获取行
val row:row=AVROMSGTROW(message.getData())
一行
})
}
我的
build.sbt
看起来像:

libraryDependencies++=Seq(
“org.apache.spark”%%“spark核心”%sparkVersion,
“org.apache.spark”%%“spark sql”%sparkVersion,
//“org.apache.spark”%%“spark mllib”%sparkVersion,
“org.apache.spark”%%“spark流媒体”%sparkVersion,
//“org.apache.spark”%%“spark配置单元”%sparkVersion,
“com.google.cloud”%”谷歌云bigquery“%bigQueryVersion,
“com.google.api”%”谷歌api服务bigquery“%googleApiBigQueryVersion,
“com.google.cloud”%”谷歌云nio“%gcs”,
“com.sksamuel.avro4s”%%“avro4s核心”%avro4s版本
)
// https://mvnrepository.com/artifact/com.google.cloud.bigdataoss/bigquery-connector
libraryDependencies+=“com.google.cloud.bigdataoss”%“bigquery连接器”%“0.10.0-hadoop2”
// https://mvnrepository.com/artifact/com.spotify/spark-bigquery
libraryDependencies+=“com.spotify”%%“spark bigquery”%%“0.2.2”
libraryDependencies+=“com.google.api”%”谷歌api服务pubsub“%”v1-rev425-1.25.0
// https://mvnrepository.com/artifact/org.apache.bahir/spark-streaming-pubsub
libraryDependencies+=“org.apache.bahir”%%“spark streaming pubsub”%%“2.3.0”
// https://mvnrepository.com/artifact/org.scala-lang/scala-library
libraryDependencies+=“org.scala lang”%“scala库”%“2.10.0-M3”
// https://mvnrepository.com/artifact/org.apache.spark/spark-avro
libraryDependencies+=“org.apache.spark”%%“spark avro”%%“2.4.0”
如果你需要更多的信息,请告诉我


我希望通过单个PubSub订阅可以获得每秒100万个元素的数据接收速度。

我认为您需要首先确定Spark流媒体作业的瓶颈。是CPU受限、内存受限、IO受限还是因为Spark的某些参数导致它没有充分利用资源?我建议您从检查资源利用率开始,然后尝试不同的方法。

喜欢这个方向,但为什么不从检查资源利用率开始呢?bahir library面临同样的问题。你能识别出这个问题吗?