如何在 Spark 中从 cassandra datastax 云中读取数据
Posted
技术标签:
【中文标题】如何在 Spark 中从 cassandra datastax 云中读取数据【英文标题】:How to read data from cassandra datastax cloud in Spark 【发布时间】:2020-12-22 11:42:26 【问题描述】:如何在 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?
【问题讨论】:
【参考方案1】:你在正确的轨道上。如果您从 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()
详情请见Spark Cassandra Connector documentation on connecting to Astra。还有来自 Alex Ott 的这篇博文,"Advanced Apache Cassandra Analytics Now Open For All"。干杯!
【讨论】:
主要问题是spark 2.0
【参考方案2】:
DataStax Astra 仅在 Spark Cassandra Connector 2.5.0+ 中得到原生支持,这需要 Spark 2.4(尽管它也适用于 2.3)。从理论上讲,您可以从安全包中提取证书和其他信息并使用它,但这是一项繁琐的任务。所以最好升级Spark版本。
但最初的问题是未提供包 - 请参阅@flightc 的答案。
【讨论】:
说到男人本人!关于我错过的 Spark 版本的好点。 :) @flightc 最初他应该按照您的指示进行操作,因为包裹丢失了以上是关于如何在 Spark 中从 cassandra datastax 云中读取数据的主要内容,如果未能解决你的问题,请参考以下文章