【问题标题】:Bit value process in Spark & PostgresqlSpark 和 Postgresql 中的位值处理
【发布时间】:2016-09-26 10:00:37
【问题描述】:

当我尝试使用bit() 编写 Spark SQL 时,会导致错误。

代码

val tpos_dfr = sqlContext.sql("SELECT idcustomer, quantity, CASE WHEN quantity < 0 THEN 1::bit(1) ELSE 0::bit(1) END as isthisreturn FROM pointofsale WHERE iddataloadmanager = 10 and quantity <> 0")   

错误

线程“主”org.apache.spark.sql.catalyst.parser.ParseException 中的异常:
外部输入“数量”期望 {, ',', 'FROM', 'WHERE', GROUP', 'ORDER', 'HAVING', 'LIMIT', 'LATERAL', 'WINDOW', 'UNION', 'EXCEPT' , 'INTERSECT', 'SORT', 'CLUSTER', 'DISTRIBUTE'}(第 1 行,位置 122)

【问题讨论】:

标签: apache-spark apache-spark-sql spark-dataframe


【解决方案1】:

您可以使用布尔表达式,并使用生成的布尔值而不是位,所以试试

SELECT 
    idcustomer, 
    quantity, 
    quantity < 0 as isthisreturn 
  FROM 
    pointofsale 
  WHERE
    iddataloadmanager = 10 and quantity <> 0

如果你在数据框上调用printSchema(),那么应该会出现一个布尔数据类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2016-07-06
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多