2

我需要定期将C *表的行存档/冷存到CSV。例如:将2016年1月 - 6月的C *表my_table中的行导出为CSV my_table.2016_06-30.csv,将2016年7月至12月的行在my_table中导出为my_table.2016-12-31.csv,依此类推。如何使用Spark Dataframe将行从C *导出到CSV文件

我认为CQL可以做到这一点,但并不是所有的表格都有我的行的时间戳列。有人建议我使用Spark Dataframes来做到这一点(所以我可以从Spark Cassandra Connector获取像writeTime这样的元数据)。

我是新来的Spark Cassandra连接器和这种Spark使用。

任何人都可以点我如何写一个Cassandra Dataframe到CSV的好例子,我在writeTime上过滤数据帧或类似的东西?

在此先感谢您的帮助,指导等

回答

0

对于表:

CREATE TABLE myKeySpace.myTable (
id INTPRIMARY KEY, 
name TEXT) 

做:

case class SimpleTable(id: Int, name: String, name_writeTime: Long) 

val df = sc.cassandraTable[SimpleTable]("saitejal", "mysql_import") 
      .select("id", "name", "name".writeTime as "name_writeTime") 
      .toDF 

# Do filtering as needed 

df.select("id", "name").write() 
    .format("com.databricks.spark.csv") 
    .option("header", "true") 
    .save("backup_all.csv"); 

我看到DataStax JIRA一些旧任务就writeTime支持对于DataFrames,特别是在GitHub上的这个PR。目前还不清楚writeTime是否可用于加载和写入DF。