如何使用Spark Dataframe将行从C *导出到CSV文件

时间:2017-09-02 00:14:35

标签: csv apache-spark dataframe cassandra spark-cassandra-connector

我需要定期将C *表中的行/冷库存储到CSV。例如:将2016年1月 - 6月的C *表my_table中的行导出为CSV my_table.2016_06-30.csv,将my_table中的2016年7月 - 2016年7月的行导出到my_table.2016-12-31.csv,依此类推。

我认为CQL是这样做的,但并非我的所有表都为我的行设置了时间戳列。有人建议我使用Spark Dataframes来实现这一点(所以我可以使用来自Spark Cassandra Connector的writeTime等元数据)。

我是Spark Cassandra Connector的新手,也是Spark的用途。

有人能指出一个很好的例子,说明如何将一个Cassandra Dataframe写入CSV,我在writeTime上“过滤”Dataframe还是类似的东西?

提前感谢任何帮助,指导等。

1 个答案:

答案 0 :(得分: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上看到writeTimeDataFrames的{​​{1}}支持的一些旧任务,尤其是GitHub上的PR。目前还不清楚writeTime是否可用于加载和写入DF。