当前位置: 首页 > 知识库问答 >
问题:

Spark Cassandra Connector in Action:如果Cassandra托管在不同的服务器上,它是如何工作的

能正青
2023-03-14

场景:Cassandra托管在服务器a.b.c.d上,spark运行在服务器上,比如w.x.y.z

假设我想将数据从cassandra中的一个表(比如table)进行转换,并使用Spark将其重写到cassandra中的另一个表(比如tableNew),我编写的代码如下所示

val conf = new SparkConf(true)
        .set("spark.cassandra.connection.host", "a.b.c.d")
        .set("spark.cassandra.auth.username", "<UserName>")            
        .set("spark.cassandra.auth.password", "<Password>")

val spark = SparkSession.builder().master("yarn")
    .config(conf)
    .getOrCreate()

val dfFromCassandra = spark.read.format("org.apache.spark.sql.cassandra").options(Map( "table" -> "<table>", "keyspace" -> "<Keyspace>")).load()

val filteredDF = dfFromCassandra.filter(filterCriteria).write.format("org.apache.spark.sql.cassandra").options(Map( "table" -> "<tableNew>", "keyspace" -> "<Keyspace>")).save

这里filterCriteria表示我所做的转换/过滤。我不确定Spark cassandra连接器在内部如何工作。这是我的困惑:

1:spark是否将数据从Cassandra源表加载到html" target="_blank">内存中,然后过滤并重新加载到目标表或

2:Spark cassandra connector是否将筛选条件转换为Where子句,并仅加载相关数据以形成RDD,并将其写入cassandra或

3:整个操作是否作为cql操作进行,其中查询转换为类似sqllike的查询,并在cassandra本身中执行?(我几乎可以肯定,情况并非如此)

共有1个答案

施阳曜
2023-03-14

要么是1。或者2。取决于您的过滤器标准。当然,Spark本身不能进行任何CQL过滤,但自定义数据源可以使用谓词下推实现它。如果是Cassandra驱动程序,它在这里实现,答案取决于它是否包含所使用的过滤器标准

 类似资料:
  • 问题内容: 我有一个绑定了单个IP的Linux服务器。我想在此IP上的此服务器上托管多个Node.js站点,每个站点(显然)都具有唯一的域或子域。我希望它们都在端口80上。 我有什么选择呢? 一个明显的解决方案似乎是让所有域都由一个node.js Web应用程序提供服务,该Web应用程序充当代理并传递给在唯一端口上运行的其他node.js应用程序。 问题答案: 选择以下之一: 使用其他一些服务器(

  • 我按照此页面在我的服务器(ngrok 1.7)上自托管ngrok https://www.svenbit.com/2014/09/run-ngrok-on-your-own-server/ ATM,我可以正常使用超文本传输协议。 但是,我也想使用ssh(tcp协议)。 当尝试使用以下命令 ngrok (Ctrl C退出) 隧道在线状态 版本1.7/1.7 转发tcp://tunnel.mydoma

  • 我正在尝试使用java(JDA)设置discord bot,但在服务器上使用它时遇到了一些问题。它适用于直接消息,但由于某些原因,它不能在服务器上使用。我通过intellij将该项目设置为Maven项目。 我是从一个 这在DM中运行良好,但在服务器中不起作用。 以下是我迄今为止所尝试的: 1. 我把它从收到的消息改为: 这在我的服务器上仍然不起作用,在dms中也不起作用。 2.我更改了bot的权限

  • 问题内容: 说我要创建一个项目并将其托管在GitHub上,我 必须 创建项目结构是这样的: 在 main.go中 ,我必须将导入写为: 并且现在我也想将此项目托管到SourceForge上,是否应该复制整个项目并修改路径?似乎还不够好。还有其他方法吗?我需要的只是在 src 文件夹下创建我的项目,并且可以根据需要将其托管到任何存储库中,而无需更改软件包。 问题答案: 如果开发的是应用而非库 如果您

  • 问题内容: 这是一个简单的node.js代码。 我将其上传到cpanel托管服务器上并安装了node.js并运行它。如果服务器是普通服务器,我可以通过访问’http:// {serverip}:8080’检查脚本结果。但是在cpanel上托管域和子域,并且每个域都由每个站点匹配。甚至http:// {serverip}也不是有效的网址。如何访问我的node.js结果?请教我。谢谢。bingbing

  • 我在tomcat 8.0上使用java尝试了一个SSE(服务器发送事件)。以下是我注意到的几件事。 我单击一个按钮,它会自动向servlet发出请求。执行Servlet的GET方法,返回事件流。一旦收到完整的数据流,页面会再次自动发出另一个请求,再次接收相同的数据!!!我没有无限循环!!! > 什么是正确的方法来确保事件流只发送一次到同一个连接/浏览器会话? 什么是正确的方法来确保事件流被关闭并且