0

如何在 spark 2.0 中从 Cassandra Datastax 读取数据?

这就是我尝试过的 -

val df = spark.read.format("org.apache.spark.sql.cassandra").options(Map("keyspace" -> "my_keyspace",
        "table" -> "my_table",
        "spark.cassandra.connection.config.cloud.path" -> "file:///home/training/secure-connect-My_path.zip",
        "spark.cassandra.auth.password" -> "password",
        "spark.cassandra.auth.username" -> "Username"
      ))
      .load()

我收到此错误:

Exception in thread "main" java.lang.ClassNotFoundException: Failed to find data source: org.apache.spark.sql.cassandra. Please find packages at http://spark.apache.org/third-party-projects.html

当我使用 datastax zip 时,为什么需要安装 Cassandra 或执行任何其他步骤?

使用相同的 zip 文件,我可以读取 java 程序中的数据。为什么我无法读入 Spark?

4

2 回答 2

2

你在正确的轨道上。如果您从 Spark shell 连接,您将传递如下详细信息:

$ spark-shell --packages com.datastax.spark:spark-cassandra-connector_2.11:2.5.0 \
  --files /path/to/your/secure-connect-dbname.zip \
  --conf spark.cassandra.connection.config.cloud.path=secure-connect-dbname.zip \
  --conf spark.cassandra.auth.username=astra_username \
  --conf spark.cassandra.auth.password=astra_password

然后您的代码将类似于:

import org.apache.spark.sql.cassandra._

val df = spark.read.cassandraFormat("ks_name", "tbl_name").load()

有关详细信息,请参阅有关连接到 Astra 的 Spark Cassandra 连接器文档。还有来自 Alex Ott 的这篇博文,“Advanced Apache Cassandra Analytics Now Open For All”。干杯!

于 2020-09-03T10:00:05.360 回答
2

DataStax Astra 仅在Spark Cassandra 连接器 2.5.0+中受本地支持,这需要 Spark 2.4(尽管它也适用于 2.3)。从理论上讲,您可以从安全包中提取证书和其他信息并使用它,但这是一项繁琐的任务。所以最好升级Spark版本。

但最初的问题是未提供该软件包 - 请参阅@flightc 的答案。

于 2020-09-03T10:02:12.447 回答