首页 文章

spark datasax cassandra连接器从重cassandra表慢读

提问于
浏览
3

我是Spark / Spark Cassandra Connector的新手 . 我们正在团队中第一次尝试火花,我们正在使用spark cassandra连接器连接到cassandra数据库 .

我写了一个查询,它正在使用数据库的重表,我看到Spark任务没有启动,直到对表的查询获取所有记录 .

从数据库中获取所有记录只需要3个多小时 .

从我们使用的数据库中获取数据 .

CassandraJavaUtil.javaFunctions(sparkContextManager.getJavaSparkContext(SOURCE).sc())
    .cassandraTable(keyspaceName, tableName);

即使所有数据都没有完成下载,有没有办法告诉火花开始工作?

有没有选项告诉spark-cassandra-connector使用更多线程进行获取?

谢谢,kokou .

1 回答

  • 3

    如果查看Spark UI,表扫描会创建多少个分区?我刚刚做了这样的事情,我发现Spark为扫描创建了太多的分区,结果需要更长的时间 . 我减少工作时间的方法是将配置参数 spark.cassandra.input.split.size_in_mb 设置为高于默认值的值 . 在我的情况下,花了20分钟的工作,大约四分钟 . 还有一些Cassandra读取特定的Spark变量,你可以设置here . 这些stackoverflow问题是我最初引用的问题,我希望他们也帮助你 .

    Iterate large Cassandra table in small chunks

    Set number of tasks on Cassandra table scan

    EDIT:

    关于摆弄一些Spark配置参数做了一些性能测试之后,我发现当我没有给执行者提供更多内存时,Spark创建了太多的表分区,你可能仍然需要将 spark.cassandra.input.split.size_in_mb 设置为更高的一种形式的变通方法 .

相关问题