apache-spark - Spark-redis:数据帧写入时间太慢

标签 apache-spark dataframe redis pyspark spark-redis

我是 Apache Spark/Redis 用户,最近我尝试了 spark-redis对于一个项目。该程序正在生成大约 300 万行的 PySpark 数据帧,我正在使用以下命令将其写入 Redis 数据库

df.write \
  .format("org.apache.spark.sql.redis") \
  .option("table", "person") \
  .option("key.column", "name") \
  .save()

GitHub project dataframe page 中的建议.

但是,对于相同的 Spark 集群配置(相同数量的 EC2 实例和实例类型),我的写入时间不一致。有时它发生得非常快,有时又太慢了。有什么办法可以加快这个过程并获得一致的写入时间吗?我想知道当里面已经有很多键时它是否会慢慢发生,但这对于哈希表来说应该不是问题,不是吗?

最佳答案

这可能是您的分区策略有问题。

写入前检查“df”的分区数,看分区数和执行时间是否有关系。

如果是这样,使用合适的分区策略对“df”进行分区(重新分区到固定数量的分区或基于列值重新分区)应该可以解决问题。

希望这对您有所帮助。

关于apache-spark - Spark-redis:数据帧写入时间太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54338284/

相关文章:

java - 如何用reduceByKey替换groupByKey以在Spark java中作为Iterable值返回?

python - 按最近的索引加入 pandas DataFrame 值

python - 满足特定条件的 Pandas Dataframe 正向填充

java - 为什么 Spark 应用程序失败并显示 "IOException: (null) entry in command string: null chmod 0644"?

java - 通过sparksql从hive中选择最新的数据分区

elasticsearch - Cassandra 和高级查询 : Spark, ElasticSearch, Sorl

python - 在循环中附加数据帧时列名会重复吗?

regex - Redis 或 checkin MATCH

database - Redis + “source of truth” 数据库一致性

redis - 我可以通过任何方式在 Redis 中存储超过其 RAM 大小的数据吗?