我刚开始使用spark-cassandra连接器并遇到以下问题:我有一个部分位于cassandra的数据集,部分位于HDFS(相同的模式)。我想在这两组中创建一个UnionRDD并从那里开始。
到目前为止我的代码是这样的:
DataFrame df = sqlContext.parquetFile("foo.parquet");
JavaRDD cassandraRDD = (JavaRDD)javaFuntions(sc).cassandraTable("foo_ks","foo_table");
DataFrame cassandraDF = sqlContext.applySchema(cassandraRDD,df.schema());
我收到一个运行时错误,说CassandraRow无法转换为来自applySchema调用的spark.sql.Row ......这并不奇怪。什么是让这个工作的正确方法? (我的最终目标是联合df& cassandraDF)。
我正在尝试使用Spark 1.3.1和cassandra-spark的主分支构建。
答案 0 :(得分:0)
最简单的方法是编写一个将采用
的地图函数此地图功能
所以,你应该可以做llike
cDF = cRDD.map(c2r).createDataFrame()// map将返回行,因此此处不需要applySchema
基本上,我建议使用单个函数处理转换。一旦从cassandra数据“创建”DF,您就可以与任何其他DF联合。