在 SparkSession.SQL 中执行 Prepared 和 Batch 语句

Posted

技术标签:

【中文标题】在 SparkSession.SQL 中执行 Prepared 和 Batch 语句【英文标题】:Execute Prepared and Batch Statement in SparkSession.SQL 【发布时间】:2017-01-19 18:27:42 【问题描述】:

如何使用 SparkSession.SQL 在 Java 中针对 Cassandra 执行 Prepared 和 Batch 语句? 我正在使用 Spark 2.1

【问题讨论】:

【参考方案1】:

简答:批处理和准备语句自动发生。

长答案:SparkSql 通过 Spark Cassandra 连接器 - Cassandra 数据源工作。数据源关系定义了如何从 Cassandra 读取和写入数据。这意味着通过 SparkSql 或 Dataset api 进行的任何写入都将使用 Spark Cassandra 连接器附带的所有功能。

所有写入都将使用准备好的语句和分区键批处理来完成。要调整批处理的完成方式(或任何其他写入配置),您可以更改此处列出的参数

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/reference.md#write-tuning-parameters

由于 SparkSql 仅通过这种关系进行通信,因此无法使用 Cassandra 特定的概念,例如 Batching 或 Prepared statements。

【讨论】:

我没有资源来提供一对一的支持 :) 但是请随时向邮件列表发送电子邮件,我会看看我是否有时间groups.google.com/a/lists.datastax.com/forum/#!forum/… 非常感谢!这已经足够了 另一件事,这是否意味着我只需要单独执行多个 Insert 语句,然后 Spark 可以处理它们,或者我需要编写“开始批处理”并将它们分组到一个语句中? 您不应该在 spark sql 中编写单个插入语句。您应该转换其他大数据对象。喜欢SELECT * from X Where X.a > 5 INSERT INTO Y 对不起.. 我不熟悉这个。你能指导我一份好的文件吗?

以上是关于在 SparkSession.SQL 中执行 Prepared 和 Batch 语句的主要内容,如果未能解决你的问题,请参考以下文章

`pyspark.sql.SparkSession.sql` 和 `SQLContext.read.format()` 有啥区别?

SparkSession.sql 和 Dataset.sqlContext.sql 有啥区别?

在 spark 中捕获已执行 sql 的异常

在数据框 API 中使用 spark SQL udf

Spark UDF 函数怎么实现参数数量变化?

被质疑“在开源社区执行微软意愿”,.NET 基金会前董事为其提交的 PR 道歉并辞职...