Scala Cassandra使用Spark连接到蜂箱
我有一个如下所示的cassandra表,希望使用一些条件从cassandra获取记录,并将其放入hive表中 卡桑德拉表格(员工)条目: 假设此表列为数据类型字符串。 我们在hive中也有相同的模式 现在我想将2017041801到2017041804之间的cassandra记录导入hive或hdfs。在第二次运行中,我将基于上一次运行提取增量记录 我能够使用下面的语法将cassandra数据加载到RDD中Scala Cassandra使用Spark连接到蜂箱,scala,apache-spark,cassandra,spark-dataframe,spark-cassandra-connector,Scala,Apache Spark,Cassandra,Spark Dataframe,Spark Cassandra Connector,我有一个如下所示的cassandra表,希望使用一些条件从cassandra获取记录,并将其放入hive表中 卡桑德拉表格(员工)条目: 假设此表列为数据类型字符串。 我们在hive中也有相同的模式 现在我想将2017041801到2017041804之间的cassandra记录导入hive或hdfs。在第二次运行中,我将基于上一次运行提取增量记录 我能够使用下面的语法将cassandra数据加载到RDD中 val sc = new SparkContext(conf) val rdd = sc
val sc = new SparkContext(conf)
val rdd = sc.cassandraTable("mydb", "Employee")
现在,我的问题是如何根据between条件过滤这些记录,并将过滤后的记录保留在配置单元或配置单元外部表路径中
不幸的是,我的时间列不是cassandra表中的集群键。所以我不能使用.where()子句
我不熟悉这个scala和spark。因此,请在这个过滤器逻辑上提供帮助,或者使用dataframe实现这个逻辑的任何其他更好的方法,请让我知道
提前谢谢
val df = spark
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "Employee", "keyspace" -> "mydb" ))
.load()
df.filter("time between 2017041801 and 2017041804")
.write.mode("overwrite").saveAsTable("hivedb.employee");
您可以在spark本身中进行过滤,这里将介绍一些内容:保存到蜂巢,谢谢@Artem Aliev
val df = spark
.read
.format("org.apache.spark.sql.cassandra")
.options(Map( "table" -> "Employee", "keyspace" -> "mydb" ))
.load()
df.filter("time between 2017041801 and 2017041804")
.write.mode("overwrite").saveAsTable("hivedb.employee");