我有以下情况。我有大型Cassandra表(有大量列),我想用Spark处理。我只想将选定的列加载到Spark(在Cassandra服务器上应用选择和过滤)
Message
上面的语句给出了一个CassandraTableScanRDD,但我如何将其转换为DataSet / DataFrame?
我有什么其他方法可以对列进行服务器端过滤并获取数据帧吗?
答案 0 :(得分:1)
在DataStax Spark Cassandra Connector中,您可以将Cassandra数据读作Dataset
,并在服务器端修剪列,如下所示:
val df = spark
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "devices", "keyspace" -> "test" ))
.load()
val dfWithColumnPruned = df
.select("device_ccompany","device_model","device_type")
请注意,我在阅读后执行的selection
操作会使用Catalyst优化推送到服务器端。有关详细信息,请参阅此document。