转换CassandraTableScanRDD org.apache.spark.rdd.RDD
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了转换CassandraTableScanRDD org.apache.spark.rdd.RDD相关的知识,希望对你有一定的参考价值。
我有以下情况。我有大型Cassandra表(有大量列),我想用Spark处理。我只希望将选定的列加载到Spark(在Cassandra服务器本身上应用选择和过滤)
val eptable =
sc.cassandraTable("test","devices").select("device_ccompany","device_model","devi
ce_type")
上面的语句给出了一个CassandraTableScanRDD,但我如何将其转换为DataSet / DataFrame?
Si还有其他任何方式我可以对列进行服务器端过滤并获取数据帧吗?
答案
在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。
以上是关于转换CassandraTableScanRDD org.apache.spark.rdd.RDD的主要内容,如果未能解决你的问题,请参考以下文章
为啥有些开发人员忽略了转换的 -moz- 和 -o- 声明?
有啥方法可以将此字符串:“Coordenação”转换为:javascript/jquery 中的“Coordenação”?
将 C++ 目标文件从 linux .o 转换为 Windows .obj
Scipy hstack 导致“TypeError:类型不支持转换:(dtype('float64'),dtype('O'))”