在不使用 case 类 的情况下从 spark 查询 cassandra table
Query cassandra table from spark without using case classes
我正在使用 datastax's connector 连接到 cassandra。
下面是我使用的代码,
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import com.datastax.spark.connector._
val sqlContext = new SQLContext(sc)
val conf=new SparkConf(true)
.set("spark.cassandra.connection.host","127.0.0.1")
.set("spark.cassandra.auth.username","the_username")
.set("spark.cassandra.auth.password","the_password")
val sc=new SparkContext("local","the_keyspace",conf)
val table_1 = sc.cassandraTable("the_keyspace","table_1")
val table_2 = sc.cassandraTable("the_keyspace","table_2")
现在,将此 table 公开为 RDD 的方法是使用 case class 作为占位符,如下所示
case class Person(name: String, age: Int)
sc.cassandraTable[Person](“test”, “persons”).registerAsTable(“persons”)
这很好用,但我在每个 table 中有大约 50 多列,并且在一个案例 class 中输入它们并识别它们的类型真的很痛苦。
有办法克服这个问题吗?我习惯于使用 databricks-csv 将 csv 文件作为 table 获取,我可以将它们注册为 tables 和 运行 查询,而无需使用 case class 占位符,我的用例在这里有类似的东西吗?
如果有 none,如果有一些生成器可以用来自动生成这些案例 classes。
您可以直接创建数据框:
val df = sqlContext
.read.format("org.apache.spark.sql.cassandra")
.options(Map("keyspace" -> "test", "table" -> "persons"))
.load()
我正在使用 datastax's connector 连接到 cassandra。
下面是我使用的代码,
import org.apache.spark.sql.SQLContext
import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import com.datastax.spark.connector._
val sqlContext = new SQLContext(sc)
val conf=new SparkConf(true)
.set("spark.cassandra.connection.host","127.0.0.1")
.set("spark.cassandra.auth.username","the_username")
.set("spark.cassandra.auth.password","the_password")
val sc=new SparkContext("local","the_keyspace",conf)
val table_1 = sc.cassandraTable("the_keyspace","table_1")
val table_2 = sc.cassandraTable("the_keyspace","table_2")
现在,将此 table 公开为 RDD 的方法是使用 case class 作为占位符,如下所示
case class Person(name: String, age: Int)
sc.cassandraTable[Person](“test”, “persons”).registerAsTable(“persons”)
这很好用,但我在每个 table 中有大约 50 多列,并且在一个案例 class 中输入它们并识别它们的类型真的很痛苦。
有办法克服这个问题吗?我习惯于使用 databricks-csv 将 csv 文件作为 table 获取,我可以将它们注册为 tables 和 运行 查询,而无需使用 case class 占位符,我的用例在这里有类似的东西吗?
如果有 none,如果有一些生成器可以用来自动生成这些案例 classes。
您可以直接创建数据框:
val df = sqlContext
.read.format("org.apache.spark.sql.cassandra")
.options(Map("keyspace" -> "test", "table" -> "persons"))
.load()