如何从spark中的cassandra datastax云读取数据

qcbq4gxm  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(677)

如何读取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

当我使用DataStaxZip时,为什么我需要安装cassandra或执行任何附加步骤?
使用相同的zip文件,我可以在java程序中读取数据。为什么我不能读入Spark?

pvcm50d1

pvcm50d11#

datastax astra仅在spark cassandra connector 2.5.0+中受本机支持,后者需要spark 2.4(尽管它也适用于2.3)。理论上,您可以从安全捆绑包中提取证书和其他信息,并使用它们,但这是一项繁琐的任务。所以最好升级spark版本。
但最初的问题是没有提供这个包——请看@flightc的答案。

u3r8eeie

u3r8eeie2#

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

$ 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也发表了这篇博文,“高级apache cassandra分析现在对所有人开放”。干杯!

相关问题