【问题标题】:Spark get ttl column from cassandraSpark 从 cassandra 获取 ttl 列
【发布时间】:2019-03-20 20:47:05
【问题描述】:

我正在尝试从 cassandra 获取 ttl 列,但到目前为止我无法使其工作。

这是我目前尝试过的:

SparkSession sparkSession = SparkSession.builder()
        .appName("Spark Sql Job").master("local[*]")
        .config("spark.sql.warehouse.dir", "file:///c:/tmp/spark-warehouse")
        .config("spark.cassandra.connection.host", "localhost")
        .config("spark.cassandra.connection.port", "9042")
        .getOrCreate();

SQLContext sqlCtx = sparkSession.sqlContext(); 

Dataset<Row> rowsDataset = sqlCtx.read()
        .format("org.apache.spark.sql.cassandra")
        .option("keyspace", "myschema")
        .option("table", "mytable").load();

rowsDataset.createOrReplaceTempView("xyz");   
rowsDataset = sparkSession.sql("select ttl(emp_phone) from vouchers");   
rowsDataset.show();

【问题讨论】:

  • 请格式化你的代码
  • DataFrames 尚无此支持 - 仅回答中描述的 RDD

标签: java apache-spark cassandra


【解决方案1】:

来自 spark-cassandra-connector 文档:

select 方法允许查询表格单元格的 TTL 和时间戳。

使用 Select 检索 TTL 和时间戳的示例

val row = rdd.select("column", "column".ttl, "column".writeTime).first
val ttl = row.getLong("ttl(column)")
val timestamp = row.getLong("writetime(column)")       

可以通过在列上调用 as 来为选定的列赋予别名 选择器,在获取 TTL 和 时间戳。

https://github.com/datastax/spark-cassandra-connector/blob/master/doc/3_selection.md

【讨论】:

猜你喜欢
  • 2020-05-25
  • 2020-08-30
  • 2018-12-10
  • 2015-05-10
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 2017-08-17
相关资源
最近更新 更多