【问题标题】:How do I use Spark Dataframes to export rows from C* to CSV files如何使用 Spark Dataframes 将行从 C* 导出到 CSV 文件
【发布时间】:2018-02-11 01:21:18
【问题描述】:

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

我考虑使用 CQL 来执行此操作,但并非所有表都有我的行的时间戳列。有人建议我使用 Spark Dataframes 来执行此操作(这样我就可以从 Spark Cassandra 连接器获取诸如 writeTime 之类的元数据)。

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

谁能指出一个很好的例子,说明如何将 Cassandra 数据帧写入 CSV,我在 writeTime 或类似的东西上“过滤”数据帧?

提前感谢您的任何帮助、指导等。

【问题讨论】:

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


    【解决方案1】:

    对于一张桌子:

    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。

    【讨论】:

      猜你喜欢
      • 2015-08-20
      • 2015-11-03
      • 1970-01-01
      • 2014-01-09
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多