【问题标题】:Cannot query based on TimeUUID in Spark SQL无法在 Spark SQL 中基于 TimeUUID 进行查询
【发布时间】:2016-07-14 22:59:24
【问题描述】:

我正在尝试使用 SparkSQL 终端查询 Cassandra 数据库。 查询:

select * from keyspace.tablename 
where user_id = e3a119e0-8744-11e5-a557-e789fe3b4cc1;

错误:java.lang.RuntimeException:[1.88] 失败:预期“联合”,但找到标识符 e5

也试过了:

user_id= UUID.fromString(\`e3a119e0-8744-11e5-a557-e789fe3b4cc1\`)")

user_id= \'e3a119e0-8744-11e5-a557-e789fe3b4cc1\'")

token(user_id)= token(`e3a119e0-8744-11e5-a557-e789fe3b4cc1`)

我不知道如何查询timeuuid上的数据。

【问题讨论】:

    标签: apache-spark cassandra apache-spark-sql spark-cassandra-connector


    【解决方案1】:

    SparkSQL 不支持将 TimeUUID 作为类型,因此您只能进行直接的字符串比较。将 TIMEUUID 表示为字符串

    select * from keyspace.tablename where user_id = "e3a119e0-8744-11e5-a557-e789fe3b4cc1"
    

    【讨论】:

    • 我也试过这个,但是 sparkSQL 不能识别 TIMEUUID:1) val group = csc.sql("select a from keyspace.table WHERE user_id='e3a119e0-8744-11e5-a557-e789fe3b4cc1 '"); 2)group.show() // 这会抛出错误:Cannot convert object e3a119e0-8744-11e5-a557-e789fe3b4cc1 of type class org.apache.spark.sql.types.UTF8String to java.util.UUID。跨度>
    • 使用 HiveContext,错误可能取决于您的版本确保您使用最新版本的可用连接器
    • 我发现这是 DSE 4.8.4 的问题,在 DSE 5.0.0 的更高版本中已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 1970-01-01
    • 2015-08-24
    相关资源
    最近更新 更多