java - Spark 从 cassandra 获取 ttl 列
问题描述
我正在尝试从 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();
解决方案
来自 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
推荐阅读
- linux - 消息:在 macOS Big Sur 版本 11.6 上执行 scp 命令时超出文件大小限制
- filter - 用 GL 账户过滤成本中心并取总
- salesforce - salesforce 开发人员 - SFDX:从 Org 检索源
- sql-server - dotnet ef 用于开发/生产的单独数据库提供程序
- javascript - 我想要一个基于滚动位置的 IMG 淡入淡出,适用于桌面,但移动设备上的滚动位置始终为“0”。
- javascript - 了解 tinyMCE 为何/如何存储
在对应的 textarea 值中 - python-3.x - Python API:同步多线程数据库查询
- palantir-foundry - 如何在 Foundry 上为用户设置主页?
- python - 将 GroupBy 对象转换为 Dataframe (pandas)
- pandas - 数据框:获取行并更新它